c++ 一个头文件引用另一个头文件的类
----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++ 一个头文件引用另一个头文件的类相关推荐
- python导入其他py文件-Python中py文件引用另一个py文件变量的方法
最近自己初学Python,在编程是遇到一个问题就是,怎样在一个py文件中使用另一个py文件中变量,问题如下: demo1代码 import requests r = requests.get(&quo ...
- less (三) 一个less 文件引用另一个less文件
现在假设我们写了两个less文件,一个文件是a.less 另一个文件是 b.less; 那么a.less文件中如何引用b.less中的文件呢? 例子: 先新建如下的目录结构 文件信息: index. ...
- python怎么调用另一个py文件的变量,Python中py文件引用另一个py文件变量的方法
Python中py文件引用另一个py文件变量的方法 最近自己初学Python,在编程是遇到一个问题就是,怎样在一个py文件中使用另一个py文件中变量,问题如下: demo1代码 import requ ...
- 当一个头文件引用另一个头文件中的类~
1.C++头文件中的类相互引用 核心:头文件相互引用,一个#include,另一个class C C++头文件相互#include时最好是: (1)在"CA.h"中 #includ ...
- node.js关于一个js文件引用另一个js文件里面的函数或者数组变量
node.js中跨文件的数据使用目前知道的有以下两种方式: 1.global变量 例:1.js 中有 function debug(){ console.log('debug'); } global. ...
- python怎么调用另一个py文件的变量_Python中py文件引用另一个py文件变量的方法
{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...
- 关于Keil中,变量函数跨文件引用报错问题
作者是keil 4的新手,刚上手此编译器,如有不当,敬请斧正! 当我们想象vc一样使用keil里面的全局变量,函数时,明明定义了全局变量,包含了头文件,结果,在keil里要么报重定义错误,要么,干脆报 ...
- C语言两个同名头文件,C lang: C语言中两个头文件引入相同的头文件(Header.h)
C lang: C语言中两个头文件引入相同的头文件(Header.h) C lang: C语言中两个头文件引入相同的头文件(Header.h) [var1] For example: Header.h ...
- C++ : 编译单元、声明和定义、头文件作用、防止头文件在同一个编译单元重复引用、static和不具名空间...
转 自:http://www.cnblogs.com/rocketfan/archive/2009/10/02/1577361.html 1. 编译单元:一个.cc或.cpp文件作为一个编译单元,生成 ...
最新文章
- CodeGen CreateFile实用程序
- GARFIELD@01-24-2005
- 俯卧撑打造男人结实臂膀
- sql 递归查询所有的下级
- 华为全面屏鸿蒙,华为5G概念新机:真全面屏+鸿蒙OS 这才是旗舰手机
- 百万数据php7取出循环_用php处理百万级以上的数据
- 离职通知邮件主题写什么好_(原创)拿到了企业的offer后要注意什么?
- Bootstrap Wizard 多步表单控件
- Linux 入门常用命令
- Golang1.71.3下载以及安装(Linux Mac Windows)
- 推美妆、搭IP,出货千万的天猫精灵打上95后的主意
- 素质的冰山模型,成就动机 笔记
- 免费PDF拆分与合并工具
- 流量监测NetLimiter v4.1.6.0
- odl源码系列一restconf模块
- gbk英文占几个字节
- 2020软件测试自学全套教程-基于python自动化软件测试-2020新版软件测试中级程序员学习路线
- 如何关闭迅雷极速版的升级提示
- python爬取微博用户的微博内容和图片
- 永磁同步电机最大转矩电流比控制similink仿真模型下载
热门文章
- 如何安装Windows10+CentOS7双系统_自用成功版——注意看评论的注意事项
- WP缩略图出不了,打开缩略图提示“A TimThumb error has occured”
- TimesTen Warnings and Errors - TT0400 to TT9999 [IDnbsp (
- SQLServer—端口概念
- AngularJS基础01 从HelloWorld说起
- vaniglia 源码学习 (六)
- Python学习笔记:面向对象编程(4)
- Python:错误FileNotFoundError: [Errno 2] No such file or directory: 'objects/epsilon.pkl
- latex大写运算符号
- 学长毕业日记 :本科毕业论文写成博士论文的神操作20160317