ホームページ >バックエンド開発 >C++ >C++ 構文エラー: 列挙型の識別子は整数定数でなければなりません。これを解決するにはどうすればよいですか?

C++ 構文エラー: 列挙型の識別子は整数定数でなければなりません。これを解決するにはどうすればよいですか?

WBOY
WBOYオリジナル
2023-08-22 10:27:171145ブラウズ

C でプログラミングしている場合、「列挙型の識別子は整数定数である必要があります」という構文エラー メッセージが表示されることがあります。この記事では、この問題の原因と考えられる解決策について説明します。

まず第一に、列挙とは何かを明確にする必要があります。 C では、列挙型は、離散値を持つ定数のコレクションを定義するために使用される特別なデータ型です。列挙内の各定数には整数値が割り当てられ、最初の定数はデフォルトで 0 に設定され、残りの定数は順番に増加します。例:

enum Weekday {Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday};

上記のコードでは、Weekday はこの列挙型の名前、月曜日、火曜日などはそのメンバー定数で、それぞれ 0 から 6 までの整数値が割り当てられます。 。

ただし、列挙型を誤って定義し、メンバー定数の値を文字列や浮動小数点数などの非整数定数として定義すると、「列挙型の識別子は整数でなければなりません」というメッセージが表示されます。 「定数」の構文エラーメッセージが表示されます。例:

enum Fruit {Apple = 1, Banana = 2, Orange = "orange"}; //错误!

上記のコードでは、Orange は文字列定数として定義されているため、コンパイル中にエラーが報告されます。

それでは、この問題をどうやって解決すればいいのでしょうか?簡単な回避策は、デフォルトの増分方法を使用する代わりに、すべてのメンバー定数に明示的に整数値を指定することです。次に例を示します。

enum Fruit {Apple = 1, Banana = 2, Orange = 3};

上記のコードでは、非整数定数によるエラーを回避するために、各メンバー定数に整数値を手動で指定します。

もう 1 つの解決策は、通常の列挙の代わりに enum クラスを使用することです。列挙クラスは通常の列挙よりも厳密であり、整数値の暗黙的な変換を許可しないため、上記のエラーが回避されます。例:

enum class Fruit {Apple = 1, Banana = 2, Orange}; //Orange自动被分配整数值3

上記のコードでは、enum クラスを使用して Fruit タイプの列挙を定義し、Orange には整数値が指定されていませんでしたが、これは enum であるため、整数値 3 が割り当てられました。クラスの動作定義。

つまり、C プログラミングで「列挙型の識別子は整数定数でなければなりません」という構文エラーが発生した場合、メンバー定数の整数値を明示的に指定するか、列挙型クラスを使用することでこれを解決できます。

以上がC++ 構文エラー: 列挙型の識別子は整数定数でなければなりません。これを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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