Наследование шаблона с++ [дубликат]

229
16 мая 2018, 18:50

На данный вопрос уже ответили:

  • Ошибка в иерархии классов 2 1 ответ

Ожидалось в Child иметь доступ к val, но компилятор запротестовал(почему?):

template<typename T>
struct Base
{
    T val;
};
template<typename T>
struct Child : Base<T>
{
    void show() {cout << val + val2 << endl;};
    T val2;
};
int main ()
{
    Child<int> obj;
    obj.val = 123;
    obj.val2 = 456;
    obj.show();
}

-

error: ‘val’ was not declared in this scope
  void show() {cout << val + val2 << endl;};
Answer 1

Следует указать префикс с базовым типом:

void show() {cout << Base<T>::val + val2 << endl;};

иначе компилятор не может определить к чему относится идентификатор val

READ ALSO
Ошибка в библиотеке functional? - C++

Ошибка в библиотеке functional? - C++

При попытке подключения библиотеки thread или mutex компиляция падаетОшибка находится в библиотеке functional из стандарта C++ При ее подключении программа...

276
Int перевести в string

Int перевести в string

Есть переменная:

318
C++ сериализация целочисленных типов

C++ сериализация целочисленных типов

Хочу написать шаблон для сериализации целочисленных типов в массив байт (std::vector)Каким способом это можно сделать, чтобы шаблонная функция...

227
IWebBrowser2 is navigation complete? - C++ WinAPI

IWebBrowser2 is navigation complete? - C++ WinAPI

Мне нужно достать Url текущей страницы, делаю через get_LocationUrl, но сначала нужно узнать "is navigation complete", как пишет документация, только не понимаю...

247