c++ - 自动需要的类(class)?

标签 c++ class include guard

假设我有一个 A 类和一个 B 类。

A 的 .h,需要 B 的 .h,B 的 .h 需要 A 的 .h。(需要 = #include)。

所有 .h 都有守卫:

#ifndef _classX_
#define _classX_
...
...
#endif

但是如果我编译A的.cpp,那么当它包含B的.h时,B类不能包含A类的.h,因为A类已经使用了guard。

我该如何解决这个问题?

最佳答案

您将需要其中一个类的前向声明。

// a.h
// do not #include b.h

class B;    // forward declaration

class A {
    ....
    B * b;
};

请注意,类 A 不能包含实际的 B 实例 - 它必须是指针或引用。您也不能通过 header 中的 B 指针调用任何函数 - 它们必须进入一个 .cpp 源文件,该文件#includes 两个 header 。

关于c++ - 自动需要的类(class)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2985864/

相关文章:

c++ - 链接错误 : undefined reference within the same class

c++ - 双包含解决方案?

c++ - 如果我们从某个地址开始,我们如何确定变量在整个程序中占用的地址?

java - 为什么java文件被编译到java项目中的多个位置

java - 我收到错误 : class, 接口(interface)或预期的枚举,但我无法弄清楚

python - 如何在类实例上正确执行算术?例如。对 House 类实例列表的 n_people 属性求和

PHP 在邮件函数中包含无数据回显

c++ - Texture.loadFromFile 不起作用

c++ - 使用 Mbed 库在 STM32 和 PC 之间设置串行 USB 通信

c++ - EAI_NODATA 和 EAI_ADDRFAMILY 未声明(Linux 操作系统)