Доступ к данным члена через специализацию шаблона класса - PullRequest
0 голосов
/ 02 декабря 2018

Не могу получить доступ к "значению" данных члена, определенному в классе шаблона, из специализированного.Зачем?Кто-нибудь может мне помочь?Спасибо

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>'
  }

};

1 Ответ

0 голосов
/ 02 декабря 2018

Явная специализация похожа на совершенно новую вещь.Вы не можете получить доступ к чему-либо из явной специализации A<int> в основном шаблоне, потому что это как совершенно другой класс.

Но, похоже, вы хотите специализировать только конструктор.В этом случае вы можете сделать это:

template <> 
A<int>::A() {
    value = 3;  // ok
}

Это работает, потому что вы только специализируете конструктор, а остальная часть класса берется из основного шаблона.

...