关于C++编译静态模板成员数据出错 Too few template-parameter-lists
2015-09-11 17:45
731 查看
学习侯捷大师《STL源码剖析》的时候
在用GCC编译P27的 __STL_STATIC_TEMPLATE_MEMBER_BUG 测试代码:
用GCC编译时出错:Too few template_parameter-lists
主要的原因是不同时期的编译器编译方式不同,作如下修改后便能顺利编译:
这样便能顺利编译执行了。
记录轨迹,分享思想,你我共同成长。--纯白色.C
在用GCC编译P27的 __STL_STATIC_TEMPLATE_MEMBER_BUG 测试代码:
01 #include <iostream> 02 using namespace std; 03 04 template <typename T> 05 class TestClass 06 { 07 public: 08 static int data; 09 }; 10 11 int TestClass<int>::data = 1; 12 int TestClass<char>::data = 2; 13 14 int main() 15 { 16 cout<<TestClass<int>::data<<endl 17 <<TestClass<char>::data<<endl; 18 19 TestClass<int> obji; 20 TestClass<char> objc; 21 22 cout<<obji.data<<endl 23 <<objc.data<<endl; 24 25 return 0; 26 }
用GCC编译时出错:Too few template_parameter-lists
主要的原因是不同时期的编译器编译方式不同,作如下修改后便能顺利编译:
01 #include <iostream> 02 using namespace std; 03 04 template <typename T> 05 class TestClass 06 { 07 public: 08 static int data; 09 }; 10 11 template<> int TestClass<int>::data = 1; //add template<>告诉编译器这是模板实作的 12 template<> int TestClass<char>::data = 2; //add template<>告诉编译器这是模板实作的 13 14 int main() 15 { 16 cout << TestClass<int>::data << endl 17 << TestClass<char>::data << endl; 18 19 TestClass<int> obji; 20 TestClass<char> objc; 21 22 cout << obji.data << endl 23 << objc.data << endl; 24 25 return 0; 26 }
这样便能顺利编译执行了。
记录轨迹,分享思想,你我共同成长。--纯白色.C
相关文章推荐
- c++中输入与输出流
- C语言中函数参数入栈的顺序
- c#调用c++的回调函数
- c++ --> cin和cout输入输出格式
- C++ 文件读取
- C语言scanf函数详细解释
- 黑马程序员-----------C语言基础-----------C语言(理论)
- C语言将文件读入内存
- c++模板类学习
- 黑马程序员-----------C语言基础-----------预处理指令
- c语言的错误及警告对照表———— 在遇到时可以对照查看
- 【C++】返回单链表的第k个结点
- C++之多态性与虚函数
- 黑马程序员-----------C语言基础-----------结构体·枚举
- STL List容器详解
- stray'\241'in program在C++语言中是什么错误
- C++编程笔记 二(继承与多态)
- C语言文件操作函数
- c++实现顺序存储的队列
- C++编程中变量的声明和定义以及预处理命令解析