Я пытаюсь определить базовый класс, содержащий только typedef.Распространение 'typedef' из основанного на производный класс для 'template'
template<typename T>
class A
{
public:
typedef std::vector<T> Vec_t;
};
template<typename T>
class B : public A<T>
{
private:
Vec_t v; // fails - Vec_t is not recognized
};
Почему в B Я получаю сообщение об ошибке Vec_t, и мне нужно его явно написать?
typename A<T>::Vec_t v;
Точная копия: HTTP: // stackoverflow.com/questions/1567730/inheritance-and-templates-in-c-why-are-methods-invisible –
Ну, не совсем точный дубликат, так как сообщение, которое вы упоминаете, говорит о методе, в то время как этот говорит о типе. –
typename A :: Vec_t v; Это хорошо. Нет необходимости в там –