我正在尝试向我的类添加一些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;
我在很多论坛上寻找答案,但我无法找到解决方案或解决方法。谢谢你的帮助!
答案 0 :(得分:5)
您错过了typename
:
typedef typename std::vector<T>::iterator iterator;
有很多类似的问题。例如。看看以下内容:
答案 1 :(得分:2)
std::vector<T>::iterator
是一个依赖类型,因此您需要在它之前添加typename。
typedef typename std::vector<T>::iterator iterator;
^