假设我有一个 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/