我刚刚从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完美编译。
使用'enum class'或者'POLYGON'。 'enum'不会创建它自己的范围。 – chris
@chris正是如此说的。 VC++有一个愚蠢的扩展,允许该语法,但它不是有效的C++。 –
@SethCarnegie是的,但它确实会给你一个警告,即使它认为它不正确地接受这是有效的语法。 – AJG85