定义类A和类B,在类A中使用类B的对象,在类B中使用类A的对象,就成了这样:
//a.h
class A
{
......
private:
B b;
};
//b.h
class B
{
......
private:
A a;
};
编译的时候,就出现了互包含的问题。
解决这个问题,可以在a.h中声明类B,在类A中使用类B的指针,在b.h中声明类A,在类B中使用类A的指针。
前置声明的好处有:
1.前置声明的类发生变化时,只需要重新编译该类;
2.减少使用该前置声明类的类的大小;