C++中两个类相互包含引用问题

来源:互联网 发布:java substring(1) 编辑:程序博客网 时间:2024/06/01 08:15
在构造自己的类时,有可能会碰到两个类之间的相互引用问题,例如:定义了类A类B,A中使用了B定义的类型,B中也使用了A定义的类型

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()

{

……

}




阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 h小学生 小学生赛高 孩子问题 学生问题 孩子叛逆怎办 怎样面对孩子早恋 怎样对待学生早恋 如果发现女儿早恋怎么办 如何对待小孩早恋 怎样解决孩子早恋 怎么解决孩子早恋问题 怎样杜绝孩子早恋 怎样防止小孩早恋 如何正确对待早恋 如何防止孩子早恋 如何解决女儿早恋 如何阻止女儿早恋 怎样防止孩子早恋 怎样面对孩子的早恋 怎样正确对待孩子早恋 怎样看待中学生早恋 怎样预防中学生早恋 怎样帮助孩子走出早恋 如何正确引导孩子早恋 如何教育中学生早恋 怎样对待孩子的早恋问题 如何解决高中生早恋 家长怎样面对孩子早恋 如何引导中学生早恋 如何对待高中生早恋 怎样对待初中生早恋 早慧 早报首页 新加坡早报 早报网 首页早报 早报联合网 联和早报 早报即时 早报联合 早报