我无法从专门的类访问模板类中定义的成员数据“值”。为什么? 有人可以帮我吗? 谢谢
template <class T>
class A {
public:
int value;
A() {
value = 0;
}
};
template <> class A<int> {
public:
A() {
value = 3; // Use of undeclared identifier 'value'
A::value = 3; // No member named 'value' in 'A<int>'
this->value = 3; // No member named 'value' in 'A<int>'
}
};
答案 0 :(得分:3)
显式专业化就像是一门崭新的事物。您无法从主模板中的A<int>
的显式专业化访问任何内容,因为它就像一个完全不同的类。
但是,似乎您只想专门构造函数。在这种情况下,您可以这样做:
template <>
A<int>::A() {
value = 3; // ok
}
之所以可行,是因为您只专注于构造函数,而该类的其余部分则取自主模板。