类的头文件中包含其他类
在写代码的时候,经常会遇到这样的情况:
A.h
class A:
{
A{};
~A{};
private:
int m_value;
B *m_pB;
}
在这种情况下,需要用到另一个class B,那么怎么把B包含进来呢?
两种方法:
1. #include "B.h"
2. 预先申明 class B;即
A.h
...
class B;
class A:
{
....
private:
int m_value;
B *m_pB;
}
这两种方式有何不同?根据今天的调试情况,说明如下:
1. 第一种方法能够让编译器找到B的全部定义,所以我们可以在A里面这么写
class A:
{
...
bool isBenabled {return m_pB->isBenabled();}
...
}
这个时候,是可以认出来的;
不过包含头文件的话总是会有各种冲突,大家都体会过的头文件”灾难“
2.第二种方法就是告诉编译器,我们的B是一个class,仅此而已。具体B里面的函数,在A.cpp中再包含B.h就可以了
这种方法的好处是避免了头文件的包含问题,但是带来的不便是在A.h中不能写上文中那样的isBenabled这样的函数,并且,也不能定义B的智能指针为A的成员变量了