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