C++ 从其他类定义对象

C++ 从其他类定义对象,c++,C++,我无法从顶级类下的其他类定义对象 示例: class B; class a { public: a(){ cout << "a\n"; } ~a(){ cout << "~a\n"; } private: B ob; }; class B { public: B(){ cout << "B\n"; } ~B(){ cout << "~B\n"; } a ob; }; int main() {

我无法从顶级类下的其他类定义对象 示例:

class B; 
class a
{
public:     
    a(){ cout << "a\n"; }
    ~a(){ cout << "~a\n"; }
private:
B ob;
};

class B
{
public:
    B(){ cout << "B\n"; }
    ~B(){ cout << "~B\n"; }
    a ob;
};

int main()
{
    B r;

    system("pause");

}
B类;
甲级
{
公众:

a(){cout您的类是递归定义的

您的op成员不是引用,而是真实的对象。因此,每个
a
都包含一个
B
,其中包含一个
a
,其中包含一个
B
,其中包含


这个循环是永无止境的,因此无法创建B对象。

您的问题可以通过将
B
对象指针传递到
a
构造函数中来解决。如果您将
B
类更改为包含指向
a
的指针,您的递归就可以解决。实际上,您正在创建一个无限循环吃一个对象
B
,该对象包含一个对象
a
,该对象包含一个对象
B
,依此类推

class B
{
public:
    B(a* _ob) : ob(_ob) { cout << "B\n"; }
    ~B(){ cout << "~B\n"; }
    a* ob;
};

int main()
{
    a _a;
    B r(_a);

    system("pause");

}
B类
{
公众:
B(a*_ob):ob(_ob){cout