C++:声明多图迭代器时出错

aka*_*ppa 0 c++ templates

由于我对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)