0

可能重复:
我必须在哪里以及为什么要放置“模板”和“类型名称”关键字?
声明一个 C++ 集合迭代器

我正在尝试在 Linux 系统中编译 C++ 一些代码,这些代码在 Windows 中运行良好。

我有很多错误,如下所示:

code:
..
39          set<Node<T>*>::iterator child;
...

g++给我错误:

Node.h:39: error: expected ‘;’ before ‘child’

这只是一个例子。你能给我一些关于如何解决它的提示吗?

4

1 回答 1

7

你必须写

typename set<Node<T>*>::iterator child;

实际上,编译器不知道这是模板类中定义iterator的名称。你必须明确地告诉它。typeset

Visual Studio 允许这是隐式的。gcc才不是。

于 2012-12-04T11:23:36.273 回答