两个对象相互定义
来源:互联网 发布:二维数组push 编辑:程序博客网 时间:2024/04/28 02:35
现在假设需要定义两个类A,B。并分别将他们的定义和实现放在不同的文件中。设A的定义文件为a.h,实现文件为a.cpp。B的定义文件为b.h,实现文件为b.cpp。
如下定义是非法的。
//a.h
#ifndefA_H
#defineA_H
#include"b.h"
classA
{
private:
B b;
};
#endif
//b.h
#ifndefB_H
#define B_H
#include"a.h"
classB
{
private:
A a;
};
#endif
错误的关键就在于,我们在类A中定义了B的对象,又在B类中定义了A的对象,这样就会陷入循环定义的死循环中导致链接时报错。但是如果我们相互定义对方类型的指针,这样是完全可行的。
//a.h
#ifndef A_H
#define A_H
#include "b.h"
class A
{
private:
B *b; //合法
};
#endif
//b.h
#ifndef B_H
#define B_H
#include "a.h"
class A; //对类A进行额外的声明
class B
{
private:
A *a; //合法
};
#endif
有时候我们会遇到这样的奇怪现象,即使我们在b.h文件中包含了a.h,即#include “a.h”,编译器仍然无法识别类A。这时候就需要我们在调用A之前,额外地对A进行声明,使用class关键字。
今天终于可以发博客了,顺便庆祝一下,哈哈。
- 两个对象相互定义
- javascript中,两个对象相互访问
- C++类的嵌套定义问题 -- 两个类相互引用
- 两个虚拟机相互ping
- 两个类相互调用
- C++在两个类的头文件中相互定义变量,出现超前引用的情况的解决办法
- JavaScript对象,JSON对象,JSON字符串之间的相互转化大全{包含三者的具体介绍和定义}
- jquery对象与js对象的相互转换的应用和两个div只选中其中一个的操作
- 多个类的定义相互包含
- 定义对象
- 两个类的相互引用
- 两个3G模块相互通信
- 两个swf之间相互调用
- 两个android程序相互调用
- 两个应用之间相互跳转
- 两个独立app相互启动
- 两个脚本的相互加载
- 两个select列表相互移动
- MFC的DEBUG_NEW与GDI+的冲突问题
- [mongodb翻译]分片的限制(sharding limit)
- 主要几种通信协议的性能比较收藏
- ASIHttpRequest库简介、配置和安装
- Tomcat、Netty、Jetty很有趣的简单压测报告
- 两个对象相互定义
- Windows下Nginx的启动、停止等命令
- 你大爷我想吃牛腿
- yum和apt-get用法及区别
- ASIHttpRequest-创建和执行request
- c++不识别string类型
- 关于shared library的描述
- 调整ubuntu 文件句柄数
- Java正则表达式的解释说明