class A{
public:
B b;
};
class B{
public:
A a;
};
Run Code Online (Sandbox Code Playgroud)
我不能写A类"B b",因为下面定义了B类.有什么方法可以使它工作吗?
谢谢
这是不可能的.您需要在其中一个类中使用指针或引用.
class B; // forward declare class B
class A {
public:
B * b;
};
class B {
public:
A a;
};
Run Code Online (Sandbox Code Playgroud)
至于为什么不可能:A包含一个B包含一个A包含一个B ...递归没有结束.
如果您习惯于所有对象变量都是指针/引用的语言(例如java),请注意c ++中不是这种情况.当你编写class A { public: B b; };一个完整B的嵌入到A中时,它不会在A中引用.在C++中你需要明确指出你想要一个reference(B & b;)或一个指针(B * b;)