我有四个C++文件,两个 header 和两个cpp。 header 受到适当的保护,首先,我使用如下的前向声明:
//A.h
class B;
class A {
public:
A();
void doSomething(B* b);
};
和一些实现:
void A::doSomething(B* b){
b->add();
}
另一个 header 如下:
#include "A.h"
class B {
public:
B();
void add();
};
和
void B::add(){
cout << "B is adding" << endl;
}
我收到“成员访问不完整类型B的错误”,并且卡在其中。我需要在A中使用一个B,每个B必须有一个指向其“所有者”(A的实例)的指针。我该怎么办才能解决这种情况。
提前致谢
最佳答案
尽管名称相似,但B.cpp
文件并未隐式包含B.h
。您必须在两个实现中都包含B.h
。另外,如果您想同时包含 A.h
和 B.h
都包括,则创建包括守护
关于c++ - 两个 header 和两个cpp文件中的前向声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41816255/