您的位置:首页 > 其它

奇怪的找不到类型错误-头文件互相包含

2011-07-06 20:14 330 查看
报错:

./src/MemPageMaster.h:54: 错误:‘Page’ 不是 ‘XXX’ 的成员
../src/MemPageMaster.h:54: 错误:expected primary-expression before ‘,’ token
../src/MemPageMaster.h:54: 错误:expected primary-expression before ‘>’ token
../src/MemPageMaster.h:54: 错误:‘page’ 在此作用域中尚未声明
原因:因为Page和MemPageMaster都是模板类,需要所有定义和声明都在头文件"Page.h"和"MemPage.h"中,不能分离,这两个头文件互相包含,造成其中一个类无法编译,从而出现编译错误。

解决方法:
去除头文件互相包含,仅仅使一方包含另一方,比如只MemPage.h包含Page.h,Page.h不包含MemPage.h,然后在Page.h中增加MemPageMaster类的声明,
#############################################

Page.h
注释掉:

//#include "MemPageMaster.h"(这一行注释掉)
增加声明(注意在声明中提供模板参数的默认值,而非该类定义的头文件中:)
template<typename K, typename V, size_t NUMVALELEM = 1>
class MemPageMaster;

在"MemPageMaster.h"中包含"Page.h"
#############################################

#include "Page.h"
....
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐