0

列挙は、グローバル スコープで次のように宣言されます。PSLGVertex::PSLGVertex() コンストラクターは、「PSLGVertexType' はクラスまたは名前空間ではありません」という最後の引数について不平を言います。

ここで何が間違っていますか?

enum PSLGVertexType {
REFLEX_VERTEX,
CONVEX_VERTEX,
MOVING_STEINER_VERTEX,
MULTI_STEINER_VERTEX,
RESTING_STEINER_VERTEX,
OTHER_VERTEX
};

コンストラクタ

PSLGVertex::PSLGVertex() : mark(false), oriPosition(0, 0), speed(0, 0), 
startTime(0.0),firstin(NULL), firstout(NULL),type(PSLGVertexType::OTHER_VERTEX)
4

2 に答える 2

1

を使用しています。これは、クラス/構造体または名前空間であるPSLGVertexType::ことをコンパイラに伝えますが、どちらでもありません。PSLGVertexType

プレーンを使用しますOTHER_VERTEX

于 2013-10-29T07:02:45.497 に答える
0

C++-03 では、enumメンバーは外側のスコープに配置されます。だから言わないで

 PSLGVertexType::OTHER_VERTEX

むしろただ

 OTHER_VERTEX

C++ 11 では、メンバーが外側のスコープ (後方互換性のため) と内部の enum スコープの両方に配置されるため、コードは問題ありません。

C++11 には新しいスコープ付き列挙型もあり、Wikipedia で読むことができます。

于 2013-10-29T07:03:03.697 に答える