ホームページ  >  記事  >  バックエンド開発  >  C++ 構文エラー: 列挙メンバーは括弧内で初期化する必要があります。どうすればよいですか?

C++ 構文エラー: 列挙メンバーは括弧内で初期化する必要があります。どうすればよいですか?

WBOY
WBOYオリジナル
2023-08-22 15:41:04804ブラウズ

C++ 構文エラー: 列挙メンバーは括弧内で初期化する必要があります。どうすればよいですか?

C は一般的なプログラミング言語であり、その構文は比較的厳密であり、学習と適用が簡単です。ただし、特定のプログラミング中には、さまざまなエラーが発生することは避けられず、よくあるエラーの 1 つは、「列挙型メンバーは括弧内で初期化する必要がある」です。

C では、列挙型は非常に便利なデータ型であり、次のような離散値を持つ定数のセットを定義できます。

enum Color {RED, YELLOW, GREEN};

この例では、列挙型 Color を定義します。これには、RED、YELLOW、GREEN の 3 つの列挙定数が含まれます。デフォルトでは、列挙定数の値は 0、1、2 です。

ただし、列挙型定数に特別な値を割り当てたい場合は、次のように括弧内で初期化する必要があります。

enum ErrorCode {OK = 0, ERROR_FILE_NOT_FOUND = 2, ERROR_OUT_OF_MEMORY = 5};

この例では、列挙型 ErrorCode を定義します。これには、OK、ERROR_FILE_NOT_FOUND、ERROR_OUT_OF_MEMORY の 3 つの列挙定数が含まれます。このうち、OK の値は 0、ERROR_FILE_NOT_FOUND の値は 2、ERROR_OUT_OF_MEMORY の値は 5 です。

しかし、列挙定数を定義するときに初期化を忘れることがあり、「列挙メンバーは括弧内で初期化する必要があります」というエラーが発生します。たとえば、このエラーは次のコードで発生します。

enum Direction {UP, DOWN, LEFT, RIGHT, UNKNOWN = -1};

int main() {
    Direction d = LEFT;
    return 0;
}

この例では、4 つの列挙定数 UP、DOWN、LEFT、RIGHT を含む列挙型 Direction を定義します。同時に、特別な値 -1 を UNKNOWN に割り当てます。ただし、UP、DOWN、LEFT、RIGHT の特定の値を指定するのを忘れたため、コンパイラは「列挙型メンバーは括弧内で初期化する必要があります」というエラーを表示します。

それでは、このエラーにはどう対処すればよいのでしょうか?簡単な方法は、次のようなすべての列挙定数に特定の値を指定することです。

enum Direction {UP = 0, DOWN = 1, LEFT = 2, RIGHT = 3, UNKNOWN = -1};

この例では、コンパイラがエラーを要求しないように、すべての列挙定数に特定の値を指定します。 。

もう 1 つの方法は、C 11 で新しく導入された enum クラスを使用することです。 enum クラスは、すべての列挙定数に特定の型の指定を強制するタイプセーフな列挙型であり、列挙定数のスコープは列挙型に制限されます。例:

enum class Direction : int {UP, DOWN, LEFT, RIGHT, UNKNOWN = -1};

int main() {
    Direction d = Direction::LEFT;
    return 0;
}

この例では、列挙型定数の型を int として指定する enum クラス型の方向を定義します。同時に、UNKNOWN に特別な値 -1 を指定します。列挙型定数を使用する場合は、Direction::LEFT などの列挙型の接頭辞を追加する必要があります。このようにすると、列挙定数に特定の値を指定し忘れた場合でも、コンパイラはエラーを表示しません。

結論として、C の列挙型メンバーを括弧内で初期化する必要があるという問題は、すべての列挙型定数に特定の値を指定するか、enum クラス型を使用することで解決できます。プログラムの正確さと堅牢性を確保するには、プログラミング時にこの種のエラーを回避する必要があります。

以上がC++ 構文エラー: 列挙メンバーは括弧内で初期化する必要があります。どうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。