可能重复:
Where and why do I have to put the “template” and “typename” keywords?
declaring a C++ set iterator
我正在尝试编译C ++的一些代码,这在Windows系统中可以正常运行。
我遇到了很多错误,如下所示:
code:
..
39 set<Node<T>*>::iterator child;
...
g++
给了我错误:
Node.h:39: error: expected ‘;’ before ‘child’
这只是一个例子。你能给我一些如何解决它的暗示吗?
答案 0 :(得分:7)
你必须写
typename set<Node<T>*>::iterator child;
实际上,编译器不知道iterator
是模板化类type
中定义的set
的名称。你必须明确地告诉它。
Visual Studio允许这是隐式的。 gcc
没有。