通过 class 模板专业化访问成员数据
Access to a member data via a class template specialisation
我无法从专用模板访问模板 class 中定义的成员数据 "value"。为什么?
有人可以帮助我吗?
谢谢
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>'
}
};
显式专业化就像一个全新的事物。您无法从主模板中 A<int>
的显式特化访问任何内容,因为它就像一个完全不同的 class.
但是,您似乎只想特化构造函数。在这种情况下,您可以这样做:
template <>
A<int>::A() {
value = 3; // ok
}
之所以可行,是因为您只专门化了构造函数,class 的其余部分取自主模板。
我无法从专用模板访问模板 class 中定义的成员数据 "value"。为什么? 有人可以帮助我吗? 谢谢
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>'
}
};
显式专业化就像一个全新的事物。您无法从主模板中 A<int>
的显式特化访问任何内容,因为它就像一个完全不同的 class.
但是,您似乎只想特化构造函数。在这种情况下,您可以这样做:
template <>
A<int>::A() {
value = 3; // ok
}
之所以可行,是因为您只专门化了构造函数,class 的其余部分取自主模板。