ホームページ  >  記事  >  バックエンド開発  >  C++ エラー: 非整数型の列挙型の宣言は許可されていません。どのように変更すればよいですか?

C++ エラー: 非整数型の列挙型の宣言は許可されていません。どのように変更すればよいですか?

王林
王林オリジナル
2023-08-22 17:42:32929ブラウズ

C++ エラー: 非整数型の列挙型の宣言は許可されていません。どのように変更すればよいですか?

C は、プログラムの設計と開発でよく使用される、一般的に使用されるプログラミング言語です。 C でプログラムを作成する場合、さまざまなコンパイル エラーや警告が頻繁に発生します。その中で、列挙型を使用すると「非整数型の列挙型の宣言は許可されていません」というエラーが発生することがありますが、この場合はどう対処すればよいのでしょうか。この記事では、C の列挙型とは何か、およびこのエラーを修正する方法について説明します。

C 列挙型

まず、C の列挙型 (列挙型変数とも呼ばれます) について簡単に紹介します。 C では、列挙型はいくつかの値を列挙可能なリストとして定義でき、これらの値は列挙定数と呼ばれます。例を以下に示します。

enum Color {RED, BLUE, GREEN};

ここでは、列挙型 Color を定義し、その値を RED、BLUE、および GREEN として定義します。ここでの各 enum 定数は実際には整数値です。デフォルトでは、RED の値は 0、BLUE の値は 1、GREEN の値は 2 です。

このようにして、さまざまな値を列挙定数として簡単に使用できるため、プログラムがより明確で理解しやすくなります。たとえば、曜日や色などの属性をこの方法で定義できます。

非整数型の列挙型の宣言は許可されていません

ただし、列挙型を定義するときに、「非整数型の列挙型の宣言は許可されていません」というエラーが発生することがあります。 」。例:

enum Fruit {APPLE, BANANA, ORANGE, MANGO} f;

ここでは、列挙型 Fruit を定義し、その値を APPLE、BANANA、ORANGE、MANGO などとして定義し、列挙型変数 f も定義します。

しかし、プログラムをコンパイルすると、コンパイル エラーが見つかります:

error: enumeration type 'Fruit' is not allowed as underlying type of enumeration

このエラーの理由は、C 11 標準より前の列挙型では、列挙定数が以下である必要があるためです。整数型。この例では、各列挙定数に明示的に値を割り当てていませんが (デフォルト値は整数型です)、宣言した Fruit 列挙型は非整数型であったため、コンパイラはエラーを報告しました。

解決策

では、このエラーを修正するにはどうすればよいでしょうか?この問題は、C 11 の新しい「enum クラス」を使用することで解決できます。列挙型クラスは、C 11 の新しいナレッジ ポイントの 1 つです。以前の列挙型と比較すると、定義と使用法にいくつかの違いがあります。

たとえば、上記の Fruit 列挙型を次のように変更できます。

enum class Fruit {APPLE, BANANA, ORANGE, MANGO};

ここでは、enum class キーワードを使用して、Fruit を列挙クラスとして定義します。以前の列挙型とは異なり、列挙クラスの列挙定数は int 型ではなくなりました。この方法では、各列挙定数に明示的に値が割り当てられていなくても、コンパイル エラーは発生しません。

列挙型クラスを使用して定義された列挙型定数には、スコープ指定子 (::) を使用してアクセスする必要があることに注意してください。例:

enum class Fruit {APPLE, BANANA, ORANGE, MANGO};
Fruit f = Fruit::BANANA;

この時点で、f の値は、Fruit 列挙クラスの BANANA 定数の値である必要があります。このようにして、列挙型を定義する際の「非整数型の列挙型の宣言は許可されていません」というエラーを回避します。

結論

C では、列挙型は一般的に使用されるデータ型であり、いくつかの値を列挙可能なリストとして簡単に定義できます。ただし、列挙型を使用する場合、「非整数型の列挙型の宣言は許可されていません」というコンパイル エラーが発生する場合があります。現時点では、C 11 の新しい列挙型クラスを使用して、列挙型を定義する際のコンパイル エラーを回避することで、この問題を解決できます。

以上がC++ エラー: 非整数型の列挙型の宣言は許可されていません。どのように変更すればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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