存在问题:A.h 包含了 B.h, 同时 B.h 包含了 A.h ,编译报错
问题分析:例如 main.cpp 包含了 A.h ,则当编译器编译时,解析 A.h ,再解析 A.h 中包含的 B.h,
则在 B.h 中使用的 A 中的对象则由于 A.h 中的限制不能解析(A.h 中声明了 #program once),B.h 中的 A 对象编译器不认识
解决方式:
1.取消 B.h 中的 #include “A.h”,使用 class A; 代替
2.在 B.h 中使用 A 对象的指针
3. 在 B.cpp 中加入 #include "A.h",则在 B.cpp 中可以构造 A 的对象
例子:
A.h
#include "B.h"
class A{
public:
B *b;
}
B.h
class A;
class B
{
public:
A *a;
}
B.cpp
#include "A.h"