0

Windows (Visual Studio) から Linux (Mint) に切り替えたばかりで、現在はプレーンな C++ プロジェクトに QTCreator を使用しています。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 に答える