/*
* File: main.cpp
* Author: Vicky.H
*
*/
#include <iostream>
class A {
public:
static int _var;
};
int A::_var = 1;
template<typename T>
class B {
public:
static int _var;
};
//int B::_var = 1; ERROR
//int B<>::_var = 1; ERROR
/**该程序,使用VC编译正确,使用MingW与GNU编译都会在27,28,29错误!*/
int B<char>::_var = 1;
int B<int>::_var = 4;
int B<double>::_var = 8;
/*
*
*/
int main(void) {
std::cout << B<char>::_var << std::endl;
std::cout << B<int>::_var << std::endl;
std::cout << B<double>::_var << std::endl;
return 0;
}
该程序,在win32下,mingw与centos下gnu4.1.2编译均错误,使用VC编译通过.
而解决这个问题的办法也很简单,使用"模版特化"
/*
* File: main.cpp
* Author: Vicky.H
*
*/
#include <iostream>
class A {
public:
static i