C++ 是否可以将类的对象声明为同一类的成员变量?
这听起来可能很傻,我不知道C++ 是否可以将类的对象声明为同一类的成员变量?,c++,class,C++,Class,这听起来可能很傻,我不知道 class Example { private: Example x; public: //Methods }; 在java中是可能的,但是C++中显示错误。(字段“x”的类型不完整) 如何在C++中实现这一点?如果没有,还有什么其他方法可以做到这一点。我知道一个,指针:)还有别的吗 也,我很高兴知道,C++中的限制是什么? 谢谢。参考: 这是C++中不允许的,因为它是递归结构。 但是,可以使用具有相同类类型地址的指针(自引用指针
class Example {
private:
Example x;
public:
//Methods
};
在java中是可能的,但是C++中显示错误。(字段“x”的类型不完整)
如何在C++中实现这一点?如果没有,还有什么其他方法可以做到这一点。我知道一个,指针:)还有别的吗 <>也,我很高兴知道,C++中的限制是什么? 谢谢。参考: <>这是C++中不允许的,因为它是递归结构。 但是,可以使用具有相同类类型地址的指针(自引用指针)包含自身的类。它的大小是多少(
sizeof(示例)
)?Java只支持用户定义类型的引用语义…链接的价值值得怀疑。它从一开始就很好,然后进入到一般情况下不相关的特定于图形的细节中。除了指针之外,还有其他方法可以这样做吗?因为在原始问题示例中明确拥有x
,那么在您的示例中aObj
应该是std::unique\u ptr aObj
而不是A*aObj
。您需要明确地实现拷贝分配和拷贝构造。值得一提的还有@FrançoisAndrieux提出的std::shared_ptr
和std::weak_ptr
以及std::unique_ptr
的可能性。另见:
class A
{
A* aObj; // Self Referential Pointer
}