形状不是类或命名空间

时间:2012-05-08 20:58:39

标签: c++ linux enums g++

我刚刚从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 ++)返回:形状不是类或命名空间;即使它与VS2010完美匹配。

2 个答案:

答案 0 :(得分:5)

我想你想要

enum Shapes{
  LINE,
  POLYGON,
  TRIANGLE
};

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

答案 1 :(得分:3)

没有类型Shapes,但您已声明了一个名为Shapes的变量。

要定义类型使用enum Shapes {...},然后创建该类型的变量。