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 サイトの他の関連記事を参照してください。