векторный шаблон typedef

Я пытаюсь добавить typedef в мой класс, но компилятор сообщает об ошибке синтаксиса в следующем коде:

    template<class T>
class MyClass{
typedef std::vector<T> storageType; //this is fine
typedef storageType::iterator iterator; //the error is here

но следующий тоже не работает:

        typedef std::vector<T>::iterator iterator;

Я искал ответы на многих форумах, но не могу найти решения или обходного пути для этого. Спасибо за помощь!

4

Решение

Вам не хватает typename:

typedef typename std::vector<T>::iterator iterator;

Есть много похожих вопросов. Например. взгляните на следующее:

5

Другие решения

std::vector<T>::iterator является зависимым типом, поэтому перед ним нужно добавить typename.

typedef typename std::vector<T>::iterator iterator;
^
2

По вопросам рекламы [email protected]