【发布时间】:2014-11-20 13:25:07
【问题描述】:
这是我的问题,我尝试将 [Mother class] 的内容复制到 [Child class] 中,如下所示:
class Trick
{
public:
Trick();
protected:
std::string _name;
int _point;
};
class TrickGraph : public Trick
{
public:
TrickGraph();
protected:
sf::Vector2i _pos;
sf::Vector2u _size;
};
class Sheet
{
public:
Sheet()
{
_trick = NULL;
}
void set_trick(const Trick *trick)
{
if (_trick)
delete _trick;
_trick = new TrickGraph();
*(_trick) = *trick;
}
protected:
TrickGraph *_trick;
};
然后 g++ 在*(_trick) = *trick; 行打印此错误:
`In member function ‘void Sheet::set_trick(const Trick*)’:`
`error: no match for ‘operator=’ in ‘*((Sheet*)this)->Sheet::_trick = * trick’`
`note: candidate is:`
`note: TrickGraph& TrickGraph::operator=(const TrickGraph&)`
`note: no known conversion for argument 1 from ‘const Trick’ to ‘const TrickGraph&’`
`make: *** [...] Error 1`
我尝试了很多方法来解决它,但正如您所见,我在堆栈溢出上发布... 所以如果你能帮助我,那就太好了:D
【问题讨论】:
-
Works for me 如果我删除第一行中的流氓
:。错误真的来自这段代码吗? -
对不起,我错过了输入... :S 我然后编辑它
-
不,g++ 不会使用该代码产生该错误,即使您修复了琐碎的错误。发布一些重现错误的代码。
-
好的,我不想发布所有代码直奔主题,但它可能更复杂:S 我正在编辑它
-
在发布代码之前,将您要发布的确切代码复制并粘贴到
ideone.com,然后点击运行。它是否给出了您所询问的相同错误?不?你在浪费大家的时间。
标签: c++ class type-conversion