CodeBlocks代码编译错误


下面是一段测试STL组态的代码:

   
  #include <iostream>
  
#include <vector>

using namespace std;

template <typename T>
class testClass{
public:
static int _data;
};

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

int main()
{
#if defined(__sgi)
cout << "__sgi" << endl;
#endif

#if defined(__GNUC__)
cout << "__GNUC__" << endl;
cout << __GNUC__ << ' ' << __GNUC_MINOR__ << endl;
#endif

cout << testClass<int>::_data << endl;
cout << testClass<char>::_data << endl;

return 0;
}

在Codeblocks 10.05(Windows)(采用的编译器:GCC)中编译出错:

请输入图片描述

很奇怪,代码应该没问题啊,而且在VS2008中可以运行通过:

请输入图片描述

这是什么原因呢?CodeBlocks还需要别的什么设置吗?

编程工具 STL(C++) C++

Chase 12 years, 4 months ago

GCC的编译器要求比较严格,没那么自由,你要告诉它是模板。改成下面这样。
template<> int testClass<int>::_data = 1;
template<> int testClass<char>::_data = 2;

我哪忧郁的眼神 answered 12 years, 4 months ago

Your Answer