类的头文件中包含其他类

在写代码的时候,经常会遇到这样的情况:

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的成员变量了

 

posted @ 2015-12-16 21:04  sunny,lee  阅读(532)  评论(0编辑  收藏  举报