zoukankan      html  css  js  c++  java
  • 类的头文件中包含其他类

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

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

     

  • 相关阅读:
    Java语法基础
    配置环境变量
    常用Dos命令
    Python 之 进程与进程池的创建和使用
    python之进程间通信
    低级别网络接口-socket的应用和粘包现象
    网络编程之模块的使用
    Python异常类型
    练习题
    python 的re模块与正则表达式
  • 原文地址:https://www.cnblogs.com/sunny-li/p/5052358.html
Copyright © 2011-2022 走看看