类相互引用的情况,如果编译不通过的话,参考下面的原则(如果通过的话就没啥管的bushi):
在本文件中,
- 需要引用某类的成员(数据成员或函数成员,静态或不是静态),才需包含头文件
- 若只需要使用某类的指针或引用,可以不包含头文件,有一个前置申明即可
举例:A中用到B的成员,B中有A*
B.h
// 仅用到A的指针,不需要包含头文件
class A; // 但是需要前置申明
class B
{
public:
A* data;
int Int;
};
A.h
#include "B.h" // 由于用到B的成员,需要包含头文件
class A
{
public:
int func(B* bp){
return bp->Int; // 这里用到B的成员
}
};