c++ - 两个 header 和两个cpp文件中的前向声明

标签 c++ cyclic-reference file-inclusion

我有四个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.hB.h都包括,则创建包括守护

关于c++ - 两个 header 和两个cpp文件中的前向声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41816255/

相关文章:

c++ - qmake 生成的 Makefile 中缺少 QtWebKit 依赖项

c++ - 我需要帮助为 C++ 设置 .gitlab-ci.yml 文件

strlen 和 strcpy 的 C++ 编译问题

c++ - 带有旧版本库的 MinGW

c++ - 使用 openmp 遍历 map

c++ - 循环构造

C++ 类方法前向声明

java - 解决jaxb中的循环引用