我有一个类,应该有一个与其成员相同类型的课。

我的声明如下:

class clsNode
{
private:
     clsNode m_Mother;
public:
     void setMother(const clsNode &uNode, int index);
};

C++告诉我“该对象显示的类型限定符与成员函数不兼容。

我不知道我哪里出了错。

最佳答案

原因是成员m_Mother的类型在声明时具有不完整的类型。

如果您考虑一下。如果可行,您将创建一个对象,该对象内部具有相同类型,而对象内部始终具有相同类型(依此类推)。该物体在某种意义上将具有无限的大小。

一种解决方案是改为保留指向父类的指针。

class clsNode
{
private:
     clsNode* m_Mother;
public:
     void setMother(clsNode* uNode){ m_Mother=uNode; }
};

如果您想让所有 parent 在 child 的一生中一直活着,可以使用共享指针而不是原始指针。
class clsNode
{
private:
     std::shared_ptr<clsNode> m_Mother;
public:
     void setMother(std::shared_ptr<clsNode> uNode){ m_Mother=uNode; }
};

如果使用此解决方案,则最初将使用make_shared创建对象

关于c++ - C++与类(class)成员相同,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16756876/

10-09 06:37