Я пытаюсь добавить 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;
Я искал ответы на многих форумах, но не могу найти решения или обходного пути для этого. Спасибо за помощь!
Вам не хватает typename
:
typedef typename std::vector<T>::iterator iterator;
Есть много похожих вопросов. Например. взгляните на следующее:
std::vector<T>::iterator
является зависимым типом, поэтому перед ним нужно добавить typename.
typedef typename std::vector<T>::iterator iterator;
^