一个类头文件相互调用的问题! 在工程里面要相互调用类的头文件,相互调用就产生了一些问题,平时都使用#include "---.h",还有在类文件前面声明 要调用到的类,如class classtouse;想知道二者的区别! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 class classtouse; 只是申明个指针用,如果你在类体内定义对象,还是会报错的 前置声明class xx;xx* p;是没有问题的xx o;就不行,你定义对象的时候得知道对象的内存布局,而指针不需要互相包含就得使用前置声明,定义成指针形式 class classtouse;//前置声明 #include "---.h"//包含 前置声明 class xx; xx* p; 是没有问题的 xx o;就不行,你定义对象的时候得知道对象的内存布局,而指针不需要 互相包含就得使用前置声明,定义成指针形式 其实我不太清楚你说的意思,我猜大概有两种情况:1:头文件重叠包含的问题 这样情况就仿照vc固有的方法(比如你的文件为test1.h,test1.cpp)只需在test1.h里加入:#ifndef test_H#define test_H#if _MSC_VER > 1000#pragma once#endif // _MSC_VER > 1000class CTest{....};#endif一切就ok2:两个类相互包含的问题,类A里包含有类B的实例,而类B里包含有类A的实例这种情况,你用指针就迎刃而解。 前置声明只是告诉编译器这个类型有定义,但是你要用它声明对象就有问题了,只能定义对象指针,而include,则是把头文件全部移到使用include的地方,相当于在此处重新声明一样,所以可以随便使用。 #define UNICODE和#define _UNICODE有什么不同 OCX 如何返回字符串? 对文件夹下面的文件批处理问题 用于显示只读信息(多行),用什么控件比较好看呢 怎样让两个toolbat并排横放,并且不准拖到别的地方? 如何制作chm的,谢谢 简单的语法问题,送分的 难过啊,急!我写文件的方式不对吗?(我想都给你可只能给你100分) 为什么SOBEL算子要求每行的像素是4的倍数 在MFC中对多个类怎样存储? 再问 ListBox里 如何读取选定的内容? 求助!急!如何对CTreeCtrl控件中每一个子目录进行单击响应,相应在静态文本中显示不同的位图
class xx;
xx* p;
是没有问题的
xx o;就不行,你定义对象的时候得知道对象的内存布局,而指针不需要互相包含就得使用前置声明,定义成指针形式
#include "---.h"//包含
class xx;
xx* p;
是没有问题的
xx o;就不行,你定义对象的时候得知道对象的内存布局,而指针不需要 互相包含就得使用前置声明,定义成指针形式
1:头文件重叠包含的问题
这样情况就仿照vc固有的方法(比如你的文件为test1.h,test1.cpp)
只需在test1.h里加入:
#ifndef test_H
#define test_H#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CTest
{
....
};
#endif
一切就ok
2:两个类相互包含的问题,类A里包含有类B的实例,而类B里包含有类A的实例
这种情况,你用指针就迎刃而解。
而include,则是把头文件全部移到使用include的地方,相当于在此处重新声明一样,所以可以随便使用。