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:正如您所说,它将与指针一起工作,但与引用一起工作。试试看。这是这种情况下的标准设计,例如,在链接列表中,你保留指向邻居的指针等。这是这种情况下的标准设计,例如,在链接列表中,你保留指向邻居的指针等。。