4

我正在尝试向我的类添加一些 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

2 回答 2

6

您缺少一个typename

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

有很多类似的问题。例如,看看以下内容:

于 2012-10-19T16:04:04.623 回答
2

std::vector<T>::iterator是一个依赖类型,所以你需要在它之前添加 typename。

typedef typename std::vector<T>::iterator iterator;
        ^
于 2012-10-19T16:05:44.483 回答