c++ forward declaration

452 阅读1分钟
// 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;
};