C++模板类里的静态成员问题? 400 报错
这两天没事找了本《STL源码剖析》看下,可是刚看开头就出问题了,(本人菜鸟)特来请教
问题是这样的,书中有个测试stl_config.h中的各种组态问题,第一个例子
#include <iostream> using namespace std; template <typename T> class testClass { public: static int _data; }; int testClass <int>::_data = 1; //这里出错 int testClass <char>::_data = 2; int main(int argc, char *argv[]) { cout << testClass< int >::_data << endl; cout << testClass< char >::_data << endl; return 0; }
在初始化静态变量是出错了
11 5 [Error] specializing member 'testClass<int>::_data' requires 'template<>' syntax
不明白为何出错,必须写为下面这样吗?
template <typename T> int testClass <T>::_data = 1;
如果是,那岂不是书中出错?(我是菜鸟,觉得这么有名的书,估计没错吧)特来请教!!
template<> int testClass <char>::_data = 2;
这样就行了。可能作者的编译器与你的不一样。
template是编译器差异化比较大的地方。也是我不喜欢C++的原因之一。
template把事情搞得非常之复杂。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。