类的嵌套定义问题
来源:互联网 发布:苏州大学网络充值 编辑:程序博客网 时间:2024/04/29 04:27
前段时间在做一个项目时遇到一个类的嵌套定义问题,大概如下:
A.h文件
class A
{
public:void methodA();
...
};
B.h文件
class B
{
public:void methodB();
...
}
现在是再类A中要调用类B中的方法,类B中有要调用类A中的方法!
试验过的失败方法:
方法1:
A.h文件
#include "B.h"
class B;
class A
{
private:B m_classB;
public:void methodA();
...
};
B.h文件:
#include"A.h"
class B
{
private:A m_classA;
public:void methodB();
...
};
导致死循环。
可能原因:构造A时,需要先构造B;而构造B时又需要先构造A,导致死循环;
方法2:
A.h文件
#include "B.h"
class B;
class A
{
private:B *m_pClassB;
public:void methodA();
...
};
B.h文件:
#include"A.h"
class B
{
private:A *m_pClassA;
public:void methodB();
...
};
然后分别在A.cpp中的类A构造函数中加上:m_pClassB = new class B;
在B.cpp中的类B构造函数中加上:m_pClassA = new Class A;
可能原因:同方法1。
方法3:
A.h文件
#include "B.h"
class B;
class A
{
friend class B;
private:B *m_pClassB;
public:void methodA();
...
};
B.h文件:
#include"A.h"
class B
{
private:A *m_pClassA;
public:void methodB();
...
};
然后分别在A.cpp中的类A构造函数中加上:m_pClassB = new class B;
在B.cpp中的类B构造函数中加上:m_pClassA = new Class A;
出现的结果和原因同上。
正确的方法:
A.h文件
#include "B.h"
class B;
class A
{
friend class B;
private:B *m_pClassB;
public:void methodA();
...
};
B.h文件:
#include"A.h"
class B
{
public:A *m_pClassA;
public:void methodB();
...
};
然后分别在A.cpp中的类A构造函数中加上:m_pClassB = new class B;m_pClassB->m_pClassA = this;
在B.cpp中的类B构造函数中加上:m_pClassA = new Class A;
- 类的嵌套定义问题
- 类的嵌套定义问题
- C++类的嵌套定义问题 -- 两个类相互引用
- 由Struct 嵌套定义引出的问题
- c++类的嵌套定义
- DELPHI中类之间的嵌套定义
- 自定义类型的嵌套定义
- python 嵌套字典的定义
- c++中的函数嵌套调用和嵌套定义问题
- C++中头文件嵌套定义问题
- C语言函数嵌套定义问题
- C#中类嵌套定义的访问权限
- C++ 的嵌套类模板的特化定义不允许写在类定义的范围内
- C++ 的嵌套类模板的特化定义不允许写在类定义的范围内
- 嵌套定义
- 头文件中多层结构体嵌套的结构体定义问题
- 关于C++嵌套类的相关问题
- python函数的嵌套调用与嵌套定义
- mobilink通过oracle存储过程返回下载数据流问题
- 更改Oracle XDB占用的8080端口
- js技巧收集(200多个)
- 挂载windows分区
- 如何获取ResultSet的行数和列数
- 类的嵌套定义问题
- INT 10H中断
- COM与.net的交互操作之在把.net注册成"COM"
- 计算机安全方面的顶级会议 (2010年1月31日更新)
- 用ASP.NET上传大文件
- asp.net用url重写URLReWriter实现任意二级域名
- 十年编程经验凝结 与新人们分享
- MM
- 在ASP中使用FSO组件生成HTML