我有2个c ++类,成员互相引用。我正在调用引用类的成员,所以我不能使用前向声明,因为我得到错误"不允许指向不完整类类型的指针"
class A {
B* b;
void foo() {
b->do_something();
}
};
class B {
A* a;
void bar() {
a->do_something_else();
}
};
有没有办法让包含在这里工作?
已经有类似名称的门票,但我无法在那里使用解决方案。
答案 0 :(得分:4)
只需将声明与声明区分开来:
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();
}
答案 1 :(得分:0)
您可以在头文件中使用原型定义。和cpp文件中的逻辑主体。
执行此操作后,您可以使用标题中的前向声明(B类,A类)
示例:@TartanLlama