C++;成员相互引用并被使用的类 我有2个C++类,成员相互引用。我正在调用被引用类的成员,因此不能使用前向声明,因为我得到错误“不允许指向不完整类类型的指针”

C++;成员相互引用并被使用的类 我有2个C++类,成员相互引用。我正在调用被引用类的成员,因此不能使用前向声明,因为我得到错误“不允许指向不完整类类型的指针”,c++,include,C++,Include,有什么办法可以让这个包在这里工作吗 已经有一个票证以类似的名称打开,但我无法使用那里的解决方案。只需将定义与声明分开: class B; class A { public: void foo(); void do_something_else(){} private: B* b; }; class B { public: void bar(); void do_something(){} private: A* a; }; //now B has

有什么办法可以让这个包在这里工作吗


已经有一个票证以类似的名称打开,但我无法使用那里的解决方案。

只需将定义与声明分开:

class B;
class A {
public:
    void foo();
    void do_something_else(){}
private:
    B* b;
};
class B {
public:
    void bar();
    void do_something(){}
private:
    A* a;
};

//now B has a complete type, so this is fine
void A::foo() {
    b->do_something();
}

//ditto
void B::bar() {
    a->do_something_else();
}

只需将定义与声明分开:

class B;
class A {
public:
    void foo();
    void do_something_else(){}
private:
    B* b;
};
class B {
public:
    void bar();
    void do_something(){}
private:
    A* a;
};

//now B has a complete type, so this is fine
void A::foo() {
    b->do_something();
}

//ditto
void B::bar() {
    a->do_something_else();
}

您可以在头文件中使用原型定义。以及cpp文件中的逻辑体

完成此操作后,可以在头中使用转发声明(类B,类A)


示例:@TartanLlama

您可以在头文件中使用原型定义。以及cpp文件中的逻辑体

完成此操作后,可以在头中使用转发声明(类B,类A)


示例:@TartanLlama

为什么不能使用转发声明?请显示如何将类划分为文件?您可能需要向前声明,然后将
foo
bar
的函数定义移动到源文件中。为什么不能使用向前声明?请显示如何将类划分为文件?您可能需要向前声明,然后将
foo
bar
的函数定义移动到源文件中。