C++ 在作为此类实例的类内创建公共属性

C++ 在作为此类实例的类内创建公共属性,c++,class,instance,C++,Class,Instance,我正在创建一个名为Circle的类,需要一个公共属性来访问其“父”Circle实例。因此,我将其编码如下: class Circle { public: ... Circle parent; ... } 但这给了我一个错误:不允许不完整的类型 我该怎么办?您应该将父对象定义为指向圆的指针: Circle *parent; 您应该将父项定义为指向圆的指针: Circle *parent; 这是不可能做到的。考虑您的类型的内存占用:A 循环>代码>包含循环>代码>,因此它的大小不能小于

我正在创建一个名为
Circle
的类,需要一个公共属性来访问其“父”
Circle
实例。因此,我将其编码如下:

class Circle {
public:
...
    Circle parent;
...
}
但这给了我一个错误:
不允许不完整的类型


我该怎么办?

您应该将父对象定义为指向圆的指针:

Circle *parent;

您应该将父项定义为指向圆的指针:

Circle *parent;

这是不可能做到的。考虑您的类型的内存占用:A <代码>循环>代码>包含<代码>循环>代码>,因此它的大小不能小于内部<代码>循环<代码>,但该大小与外部<代码>圈< /代码>的大小相同,达到了矛盾。


也许你想存储指针或智能指针?这是允许的,因为编译器知道指针的大小。

这是无法做到的。考虑您的类型的内存占用:A <代码>循环>代码>包含<代码>循环>代码>,因此它的大小不能小于内部<代码>循环<代码>,但该大小与外部<代码>圈< /代码>的大小相同,达到了矛盾。


也许你想存储指针或智能指针?这是允许的,因为编译器知道指针的大小。

我认为参考情况在这里没有多大意义(在构建第一个
圆的过程中,它将被初始化为什么?)@DavidRodríguez dribeas Yeah,
&parent
意味着
parent
的地址。这是一个无法实现的示例。正如David所说,您希望如何构造第一个圆?这是一个如何避免错误的示例
不允许不完整类型
@flamingo:正如您所说,它将与指针一起工作,但与引用一起工作。试一试。我认为参考案例在这里没有多大意义(在构建第一个
圆的过程中,它将被初始化为什么?)@DavidRodríguez dribeas是的,
&父项
将意味着
父项的地址。这是一个无法实现的示例。正如David所说,您希望如何构造第一个圆?这是一个如何避免错误的示例
不允许不完整类型
@flamingo:正如您所说,它将与指针一起工作,但与引用一起工作。试试看。这是这种情况下的标准设计,例如,在链接列表中,你保留指向邻居的指针等。这是这种情况下的标准设计,例如,在链接列表中,你保留指向邻居的指针等。。