由于我对C++模板缺乏了解,我遇到了一个愚蠢的问题.
我有一个模板类Token和一个模板类Task.
任务在多图中包含一些令牌*; 我想迭代它们.
所以,在我的一个功能中,我写道:
template <typename C>
void Task<C>::f() {
// some code...
multimap<string, Token<C>* >::iterator it;
}
Run Code Online (Sandbox Code Playgroud)
但我从g ++得到这个编译错误:
src/structures.cpp:29: error: expected ‘;’ before ‘it’
Run Code Online (Sandbox Code Playgroud)
如果我把令牌或类似的东西,它编译.
哪里出错?
小智 5
你要:
typename multimap<string, Token<C>* >::iterator it;
Run Code Online (Sandbox Code Playgroud)
这个错误是如此常见,我认为编译器编写者应该这样做:
error: expected ‘;’ before ‘it’ - did you forget a typename?
Run Code Online (Sandbox Code Playgroud)