通过 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 的其余部分取自主模板。