我想互相创建两个类。这是代码:
class B;
class A {
public:
A(B* b) : b(b) {}
void Foo() {
b->data++;
}
B* b;
};
class B {
public:
void Boo() {
A a(this);
a.Foo();
}
int data = 0;
};
int main()
{
B b;
b.Boo();
}
当我在visual Studio 2015中编译它时,我收到错误:
错误C2027:使用未定义类型'B'
指向第六行:b->data++;
我已经阅读了问题here,但是我使用了前向声明,所以A应该知道B的存在。另外,我没有“有两个类直接包含其他类型的对象”,因为只有B包含A但A不包含B;它使用指向B的指针。此外,我的代码似乎与答案here没有本质区别,因为World类包含Agent的对象,并且这两个类相互使用。但是我的代码无法编译。所以我认为我的问题不重复。你能帮我解决这个共同使用的问题吗?非常感谢。