博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
类模板相互引用的问题(错误:缺少类型说明符-假定为int。注意:C++不支持默认int)...
阅读量:4933 次
发布时间:2019-06-11

本文共 1056 字,大约阅读时间需要 3 分钟。

问题描述:

现在有两个模板类(头文件A.h为1~14行,头文件B.h为15~27行):

 
1: ///
2: // file A.h
3: //
4: #include "B.h"
5:
6: template 
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 
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 
8: class B;
9:
10: template 
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 
26: class A;
27:
28: template 
29: class B
30: {
31: public:
32:     T b;
33:     A a_ptr;
34:     B(): b(0), b_ptr(NULL) {}
35: };

关键词:

前向声明, 模板类

E-mail:

转载于:https://www.cnblogs.com/keikain/p/4558912.html

你可能感兴趣的文章
远程连接到 ubuntu 16.04
查看>>
Unity的Shader如何控制投影颜色
查看>>
[Unity Shader笔记]渲染路径--Forward渲染路径
查看>>
如何提高页面加载速度(二)
查看>>
添加模板列
查看>>
SVD奇异矩阵分解
查看>>
Tensorflow之dropout
查看>>
mysql中find_in_set()函数的使用
查看>>
LINQ-进阶的扩展方法
查看>>
javascript Arguments对象——函数的实际参数
查看>>
关于websocket中的心跳..
查看>>
线段树基础
查看>>
react native初步常见问题
查看>>
Bzoj 3631: [JLOI2014]松鼠的新家(树链剖分+线段树)
查看>>
CSS给文字描边实现发光文字
查看>>
上周热点回顾(2.13-2.19)
查看>>
CMDB学习之四 ——DEBUG模式
查看>>
简洁好用的pdf转换器
查看>>
【BZOJ4444】国旗计划 - 决策单调性
查看>>
Android 路径大全
查看>>