----C++头文件相互引用,一个#include,另一个class C

C++头文件相互#include时最好是:

(1)"CA.h"中 #include "CB.h".

(2)"CB.h"中用类的前向声明: class CA;

(3)最好加上头文件卫士( #ifndef ***   #define ***  #endif)

示例如下:

(1)"CA.h":

#ifndef HEADER_CA

#define HEADER_CA

#include "CB.h"

class CA

{

CB* pB;

CB b;//正确,因为此处已经知道CB类的大小,且定义了CB,可以为b分配空间

};

#endif

(2)"CB.h":

#ifndef HEADER_CB

#define HEADER_CB

class CA;//这个必须要用,不能只用#include "CA.h",如果只是#include "CA.h"而没有class CA;则会报错.原因如附录[1].

class CB

{

CA* pA;

//CA a;//错误,因为此时还不知道CA的大小,无法分配空间

};

#endif

---------------

(3)"CA.cpp":

#include "CA.h"

但是,.cpp文件只能#include “CA.h”.如果#icnlude “CB.h”则错误(展开后CA不识别CB),原因可自己分析.

CB.h重复包含

定义了两个头文件

//a.h

#include"b.h"

class a

{

b *b1;

};

//=========================

//b.h

#include "a.h"

class b

{

a *a1;

};

这样子是编译不了;解决方式如下:

解决方法一:(试过好用)

不需要这么包含,除非必要,

如果你只是想在另外一个类中定义一个类的成员变量,只要在头文件中加入 class 类名;

然后要在.cpp文件中再包含这个头文件就可以了。(这是必须的,不然找不到),因为这种方式只是在头文件中包含了该类,在源文件中还不包含,这样做只是为了避免相互包含报错。

//a.h

class b;  //由原来的#include "b.h"变为class b;(或者相反)

class a

{

b *b1;

};

//=========================

//b.h

#include "a.h"

class b

{

a *a1;

};

第二种解决方案:

加入宏定义

#ifndef __A_H__

#define __A_H__

class b;

class a

{

...

}

#endif

b.h

#ifndef __B_H__

#define __B_H__

class a;

class b

{

...

}

#endif

来自 <https://blog.csdn.net/CSDNwei/article/details/50699298>

c++ 一个头文件引用另一个头文件的类相关推荐

  1. python导入其他py文件-Python中py文件引用另一个py文件变量的方法

    最近自己初学Python,在编程是遇到一个问题就是,怎样在一个py文件中使用另一个py文件中变量,问题如下: demo1代码 import requests r = requests.get(&quo ...

  2. less (三) 一个less 文件引用另一个less文件

    现在假设我们写了两个less文件,一个文件是a.less  另一个文件是 b.less; 那么a.less文件中如何引用b.less中的文件呢? 例子: 先新建如下的目录结构 文件信息: index. ...

  3. python怎么调用另一个py文件的变量,Python中py文件引用另一个py文件变量的方法

    Python中py文件引用另一个py文件变量的方法 最近自己初学Python,在编程是遇到一个问题就是,怎样在一个py文件中使用另一个py文件中变量,问题如下: demo1代码 import requ ...

  4. 当一个头文件引用另一个头文件中的类~

    1.C++头文件中的类相互引用 核心:头文件相互引用,一个#include,另一个class C C++头文件相互#include时最好是: (1)在"CA.h"中 #includ ...

  5. node.js关于一个js文件引用另一个js文件里面的函数或者数组变量

    node.js中跨文件的数据使用目前知道的有以下两种方式: 1.global变量 例:1.js 中有 function debug(){ console.log('debug'); } global. ...

  6. python怎么调用另一个py文件的变量_Python中py文件引用另一个py文件变量的方法

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  7. 关于Keil中,变量函数跨文件引用报错问题

    作者是keil 4的新手,刚上手此编译器,如有不当,敬请斧正! 当我们想象vc一样使用keil里面的全局变量,函数时,明明定义了全局变量,包含了头文件,结果,在keil里要么报重定义错误,要么,干脆报 ...

  8. C语言两个同名头文件,C lang: C语言中两个头文件引入相同的头文件(Header.h)

    C lang: C语言中两个头文件引入相同的头文件(Header.h) C lang: C语言中两个头文件引入相同的头文件(Header.h) [var1] For example: Header.h ...

  9. C++ : 编译单元、声明和定义、头文件作用、防止头文件在同一个编译单元重复引用、static和不具名空间...

    转 自:http://www.cnblogs.com/rocketfan/archive/2009/10/02/1577361.html 1. 编译单元:一个.cc或.cpp文件作为一个编译单元,生成 ...

最新文章

  1. CodeGen CreateFile实用程序
  2. GARFIELD@01-24-2005
  3. 俯卧撑打造男人结实臂膀
  4. sql 递归查询所有的下级
  5. 华为全面屏鸿蒙,华为5G概念新机:真全面屏+鸿蒙OS 这才是旗舰手机
  6. 百万数据php7取出循环_用php处理百万级以上的数据
  7. 离职通知邮件主题写什么好_(原创)拿到了企业的offer后要注意什么?
  8. Bootstrap Wizard 多步表单控件
  9. Linux 入门常用命令
  10. Golang1.71.3下载以及安装(Linux Mac Windows)
  11. 推美妆、搭IP,出货千万的天猫精灵打上95后的主意
  12. 素质的冰山模型,成就动机 笔记
  13. 免费PDF拆分与合并工具
  14. 流量监测NetLimiter v4.1.6.0
  15. odl源码系列一restconf模块
  16. gbk英文占几个字节
  17. 2020软件测试自学全套教程-基于python自动化软件测试-2020新版软件测试中级程序员学习路线
  18. 如何关闭迅雷极速版的升级提示
  19. python爬取微博用户的微博内容和图片
  20. 永磁同步电机最大转矩电流比控制similink仿真模型下载

热门文章

  1. 如何安装Windows10+CentOS7双系统_自用成功版——注意看评论的注意事项
  2. WP缩略图出不了,打开缩略图提示“A TimThumb error has occured”
  3. TimesTen Warnings and Errors - TT0400 to TT9999 [IDnbsp (
  4. SQLServer—端口概念
  5. AngularJS基础01 从HelloWorld说起
  6. vaniglia 源码学习 (六)
  7. Python学习笔记:面向对象编程(4)
  8. Python:错误FileNotFoundError: [Errno 2] No such file or directory: 'objects/epsilon.pkl
  9. latex大写运算符号
  10. 学长毕业日记 :本科毕业论文写成博士论文的神操作20160317