Страницы

Поиск по вопросам

суббота, 11 января 2020 г.

Наследование шаблонов

#cpp #наследование #шаблоны_с++


Почему не работает следующий код?

template class 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. Например, template class B : public A { public : T f() { return A::t; } }; Или template class B : public A { public : T f() { return this->t; } };

Комментариев нет:

Отправить комментарий