类模板相互引用的问题(错误:缺少类型说明符-假定为int。注意:C++不支持默认int)
2015-06-07 19:12
471 查看
问题描述:
现在有两个模板类(头文件A.h为1~14行,头文件B.h为15~27行):1: ///////////////////////////////////////////
2: // file A.h
3: //
4: #include "B.h"
5:
6: template <class T>
7: class A
8: {
9: public:
10: T a;
11: B b_ptr;
12: A(): a(0), b_ptr(NULL) {}
13: };
14:
15: ///////////////////////////////////////////
16: //file B.h
17: //
18: #include "A.h"
19:
20: template <class T>
21: class B
22: {
23: public:
24: T b;
25: A a_ptr;
26: B(): b(0), b_ptr(NULL) {}
27: };
此处编译会报如下错误:
error C4430:缺少类型说明符-假定为int。注意:C++不支持默认int
error C2143:语法错误:缺少“,”(在”<”的前面)
解决办法:
在A.h中对类B进行前向声明,在B.h中对类A进行前向声明,如下代码所示(代码7~8行和25~26行):1: ///////////////////////////////////////////
2: // file A.h
3: //
4: #include "B.h"
5:
6: // forward statement
7: template <class T>
8: class B;
9:
10: template <class T>
11: class A
12: {
13: public:
14: T a;
15: B b_ptr;
16: A(): a(0), b_ptr(NULL) {}
17: };
18:
19: ///////////////////////////////////////////
20: //file B.h
21: //
22: #include "A.h"
23:
24: // forward statement
25: template <class T>
26: class A;
27:
28: template <class T>
29: class B
30: {
31: public:
32: T b;
33: A a_ptr;
34: B(): b(0), b_ptr(NULL) {}
35: };
关键词:
前向声明, 模板类E-mail:www.lxl1965@hotmail.com
相关文章推荐
- chapter11test5
- 类模板相互引用的问题(错误:缺少类型说明符-假定为int。注意:C++不支持默认int)
- C++中的explicit关键字
- 黑马程序员——OC语言基础——面向对象三大特性之继承
- C++文件读写详解(ofstream,ifstream,fstream)
- 二值图像边缘提取算法C语言实现
- c++ --> 复制构造函数
- c语言编写贪吃蛇修改后最新版
- c++ --> 构造函数与析构函数
- C 链表
- 浅谈工作中使用过的几种C++界面库
- 初学c++之template <typename T>
- c++模板学习
- C++ primer 箭头操作符重载心得体会
- uefi的c++编程支持new和delete
- 用C++写uefi程序
- 一起talk C栗子吧(第十二回:C语言实例--单链表一)
- C++ 调用system()函数的多命令合并
- 关于C++函数思考2(C++函数返回引用和返回非引用的区别)
- C语言(1) HelloWord 与JAVA对比