// A.h和B.h两个文件相互引用
### A.h
// 因为b的初始化是通过new方式的,需要知道B具体占用多少空间,所以通过include方式引入B.h
#include "B.h"
class A {
public:
A() {
b = new B(this);
}
private:
B* b;
};
### B.h
// 前置引用,此时不知道A具体占用多少空间
class A;
class B {
public:
B(A* a) : a(a) {
}
private:
A* a;
};