#cpp #наследование #шаблоны_с++
Почему не работает следующий код? templateclass A { public : T t; }; template class B : public A { public : T f() { return t; } }; Выдаёт ошибку In member function 'T B ::f()': error: 't' was not declared in this scope T f() { return t; } ^ P.S. Компилятор GCC 6.3.0.
Ответы
Ответ 1
Это связано с поиском имен в шаблонных классах. Используйте квалифицированное имя или указатель this. Например, templateclass B : public A { public : T f() { return A ::t; } }; Или template class B : public A { public : T f() { return this->t; } };
Комментариев нет:
Отправить комментарий