在.hpp文件中我有
template <SomeEnum E>
class SomeClass {
//many definitions
class InnerClass {
//Some stuff
};
typedef std::map<std::string, InnerClass> InnerMapType;
};
在.cpp文件中我有
template <SomeEnum E>
SomeClass<E>::~SomeClass() {
InnerMapType::iterator iter;
//Iterate over resources
}
编译器在InnerMap::iterator iter;
中给出了语法错误,声称分号在它之前是预期的。如果我删除template <SomeEnum E>
部分编译器很高兴。我忘记了什么,我该如何使它发挥作用?
答案 0 :(得分:3)
要解决您的问题,您需要使用typename:
template <SomeEnum E>
SomeClass<E>::~SomeClass() {
typename InnerMapType::iterator iter;
//Iterate over resources
}