我无法在顶级类下定义其他类的对象 示例:
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级;)
答案 0 :(得分:1)
您的问题可以通过将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");
}
答案 1 :(得分:0)
您的课程是递归定义的。
你的op成员不是引用,而是真正的对象。因此,每个a
都包含B
,其中包含a
,其中包含B
,其中包含...
这个循环永远不会结束,因此无法创建B对象。