C++模板类里的静态成员问题

w_xuexi 发布于 2014/10/19 10:05
阅读 1K+
收藏 0

    这两天没事找了本《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;

如果是,那岂不是书中出错?(我是菜鸟,觉得这么有名的书,估计没错吧)特来请教!!





加载中
0
DavidWTF
DavidWTF
template<> int testClass <int>::_data = 1; 

template<> int testClass <char>::_data = 2;

这样就行了。可能作者的编译器与你的不一样。

template是编译器差异化比较大的地方。也是我不喜欢C++的原因之一。

template把事情搞得非常之复杂。


w_xuexi
w_xuexi
谢谢 原来这样!好吧 学习了!!
0
Stark_ZC
Stark_ZC
你模板中类型T体现在哪里?
曾需缘
曾需缘
回复 @w_xuexi : 净信书不如无书
w_xuexi
w_xuexi
必须给嘛?直接用int实例化,不行?还有就是这代码是书上的!
0
awetwet
awetwet
顶一个,g++也遇到这个问题,OC上,投支持票还要积分。。。
返回顶部
顶部