为什么这段代码不工作并给出“未定义的最大值”?
#include <iostream>
using namespace std;
template<typename T>
struct Foo {
static T const max;
};
template<> struct Foo<int> { // Specialization
static int max;
};
template<typename T> T const Foo<T>::max = 22;
template struct Foo<int>;
int main() {
struct Foo<int> ma;
cout << ma.max;
return 0;
}
我定义了静态变量并实例化了模板(我相信显式实例化在这里没有用)。
怎么了?
最佳答案
template<typename T> T const Foo<T>::max = 22;
是一般情况下的定义,不针对特殊情况。
您还必须定义 int Foo<int>::max = 22;
对于 int 特化。
关于c++ - 模板中的静态变量未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24323390/