C++中两个类相互包含引用问题
来源:互联网 发布:linux怎么全局翻墙 编辑:程序博客网 时间:2024/05/20 19:47
class A
{
int i;
B b;
}
class B
{
int i;
A* a;
}
请注意上面的定义内容,一般情况下是不能出现类A,类B相互引用都定义对象,即如下的样子:
class A
{
int i;
B b;
}
class B
{
int i;
A a;
}
在这种情况下,想想可以有a.b.a.b.a.b.a.b.a.b…………,很有点子子孙孙无穷尽之状,那么我的机器也无法承受。最主要的还是这种关系很难存在,也很难管理。这种定义方式类同程序中的死循环。所以,一般来说,两者的定义,至少有一方是使用指针,或者两者都使用指针,但是决不能两者都定义实体对象。
言归正传,那么,在定义时因为相互引用肯定会需要相互包含头文件,如果仅仅只是在各自的头文件中包含对方的头文件,是通不过编译的,如下:
//class A.h
#include "B.h"
class A
{
int i;
B b;
}
//class B.h
#include "A.h"
class B
{
int i;
A *a;
}
如上的包含方式可能会造成编译器有错误提示:A.h文件中使用了示知类型B。
怎么办?
一般的做法是:两个类的头文件之中,选一个包含另一个类的头文件,但另一个头文件中只能采用class *;的申明形式,而在实现文件中(*.cpp)中包含头文件,如下:
//class A.h
#include "B.h"
class A
{
int i;
B b;
}
//class B.h
class A;
class B
{
int i;
A *a;
}
//B.cpp
//在B.cpp中的文件包含处要有下面语句,否则不能调用成员a的任何内容
#include "A.h"
B::B()
{
……
}
- (c++)两个类相互包含引用的问题
- c++中两个类相互包含引用的相关问题
- c++中两个类相互包含引用的相关问题
- C++中两个类相互包含引用问题
- C++中两个类相互包含引用的相关问题
- c++中两个类相互包含引用的相关问题
- C++中两个类相互包含引用问题
- C++中两个类相互包含引用问题
- C++中两个类相互包含引用问题
- C++中两个类相互包含引用问题
- C++中两个类相互包含引用问题
- C++中两个类相互包含引用的问题
- C++中两个类相互包含引用问题
- 两个类相互包含引用的问题
- 两个类相互包含引用的问题
- 两个类相互包含引用的问题
- QT4(C++)两个头文件相互包含(类超前引用)
- (转)两个类相互包含引用的问题--类前向声明
- Prim_poj 1287 Networking
- POJ-3204 最大流+枚举
- java连接常见数据库的连接字符串
- VC6.0 最新的 SDK platform sdk xp-sp2 官方下载地址
- Hadoop HDFS源码学习笔记(七)--DFSInputStream -- openInfo
- C++中两个类相互包含引用问题
- 修改Irrlicht的FPSCamera默认光标操作
- 修改注册表把WIN7系统的用户目录设置到D盘(其他分区)
- 从测试的角度来重新反思我们自己的程序以及我们的程序员之路——“通过追本溯源来进行前瞻性思考”
- Microsoft Platform SDK Febrary 2003下载(更新VC6的SDK)
- Permissions 0644 for ‘/root/.ssh/id_rsa’ are too open处理
- LINUX平台设备(linux platform_device and platform_driver)
- C语言中可变参数的用法
- select @@identity的用法