我剛剛從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