C ++:如何相互创建两个类?

时间:2017-04-24 01:07:31

标签: c++ class forward-declaration

我想互相创建两个类。这是代码:

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的对象,并且这两个类相互使用。但是我的代码无法编译。所以我认为我的问题不重复。你能帮我解决这个共同使用的问题吗?非常感谢。

0 个答案:

没有答案