0

我刚刚从 Windows (Visual Studio) 切换到 Linux (Mint),现在我正在使用 QTCreator 来处理普通的 c++ 项目。虽然当我尝试编译我正在使用 VS2010 处理的项目时,一切似乎都运行良好,但 g++ 不会接受以下语法。

enum{
    LINE,
    POLYGON,
    TRIANGLE
}Shapes;

...很多代码...

gEngine.AddItem(1,0,Shapes::POLYGON,0,0,0);
gEngine.AddItem(1,2,Shapes::POLYGON,400,400,-1);
gEngine.AddItem(1,2,Shapes::POLYGON,800,400,-1);
gEngine.AddItem(1,2,Shapes::POLYGON,800,800,-1);
gEngine.AddItem(1,2,Shapes::POLYGON,400,800,-1);
gEngine.AddItem(1,2,Shapes::POLYGON,400,400,-1);
gEngine.AddItem(1,1,Shapes::POLYGON,0,0,0);

(G++) 返回:Shapes 不是类或命名空间;即使它与 VS2010 完美编译。

4

2 回答 2

5

我想你想要

enum Shapes{
  LINE,
  POLYGON,
  TRIANGLE
};

这声明了一个枚举类型 Shapes,但是您所定义的变量 Shapes 的类型(没有名称)是一个枚举。

于 2012-05-08T21:03:26.617 回答
3

没有类型Shapes,但您声明了一个名为Shapes.

要定义类型,请enum Shapes {...}创建该类型的变量。

于 2012-05-08T21:00:51.703 回答