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

发布于 2021-11-23 17:09:31 字数 1003 浏览 689 评论 6

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

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





如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

私藏温柔 2021-11-30 11:29:39

顶一个,g++也遇到这个问题,OC上,投支持票还要积分。。。

眉黛浅 2021-11-30 08:42:18

必须给嘛?直接用int实例化,不行?还有就是这代码是书上的!

反话 2021-11-30 08:11:12

回复
净信书不如无书

猫性小仙女 2021-11-28 19:50:59

你模板中类型T体现在哪里?

瀞厅☆埖开 2021-11-27 17:16:22

谢谢 原来这样!好吧 学习了!!

深巷少女 2021-11-27 09:11:25

template<> int testClass <int>::_data = 1; 

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文