C++ ist eine häufig verwendete Programmiersprache, die häufig beim Programmdesign und der Programmentwicklung verwendet wird. Beim Schreiben von Programmen in C++ treten häufig verschiedene Kompilierungsfehler und Warnungen auf. Unter anderem stoßen wir bei der Verwendung von Aufzählungstypen manchmal auf den Fehler „Die Deklaration von Aufzählungen nicht ganzzahliger Typen ist nicht zulässig“. In diesem Artikel wird erläutert, was C++-Aufzählungstypen sind und wie dieser Fehler geändert werden kann.
C++-Aufzählungstypen
Lassen Sie uns zunächst kurz die Aufzählungstypen (auch Aufzählungsvariablen genannt) in C++ vorstellen. In C++ können Aufzählungstypen einige Werte als aufzählbare Liste definieren. Diese Werte werden Aufzählungskonstanten genannt. Hier ist ein Beispiel:
enum Color {RED, BLUE, GREEN};
Hier definieren wir einen Aufzählungstyp „Farbe“ und definieren seine Werte als ROT, BLAU und GRÜN. Jede Enum-Konstante ist hier tatsächlich ein ganzzahliger Wert. Standardmäßig ist der Wert von ROT 0, der Wert von BLAU 1 und der Wert von GRÜN 2.
Auf diese Weise können wir bequem verschiedene Werte als Aufzählungskonstanten verwenden, wodurch das Programm klarer und verständlicher wird. So können beispielsweise Attribute wie Wochentag oder Farbe definiert werden.
Die Deklaration von Aufzählungen nicht ganzzahliger Typen ist nicht zulässig
Bei der Definition des Aufzählungstyps wird jedoch manchmal die Fehlermeldung „Die Deklaration von Aufzählungen nicht ganzzahliger Typen ist nicht zulässig“ angezeigt. Zum Beispiel:
enum Fruit {APPLE, BANANA, ORANGE, MANGO} f;
Hier definieren wir einen Aufzählungstyp Obst und definieren seinen Wert als APFEL, BANANE, ORANGE, MANGO usw. sowie eine Aufzählungsvariable f.
Beim Kompilieren des Programms werden wir jedoch einen Kompilierungsfehler feststellen:
error: enumeration type 'Fruit' is not allowed as underlying type of enumeration
Der Grund für diesen Fehler ist, dass der Aufzählungstyp vor dem C++11-Standard erfordert, dass die Aufzählungskonstante ein ganzzahliger Typ sein muss. Obwohl wir in diesem Beispiel nicht jeder Aufzählungskonstante explizit einen Wert zugewiesen haben (der Standardwert ist ein ganzzahliger Typ), war der von uns deklarierte Fruit-Aufzählungstyp ein nicht ganzzahliger Typ, sodass der Compiler einen Fehler meldete.
Lösung
Also, wie kann man diesen Fehler ändern? Wir können dieses Problem lösen, indem wir die neue „Aufzählungsklasse“ von C++11 verwenden. Aufzählungsklassen sind einer der neuen Wissenspunkte in C++11. Im Vergleich zu früheren Aufzählungstypen gibt es einige Unterschiede in Definition und Verwendung.
Zum Beispiel können wir den oben genannten Fruit-Aufzählungstyp wie folgt ändern:
enum class Fruit {APPLE, BANANA, ORANGE, MANGO};
Hier verwenden wir das Schlüsselwort enum class, um Fruit als Aufzählungsklasse zu definieren. Im Gegensatz zu den bisherigen Aufzählungstypen sind die Aufzählungskonstanten in der Aufzählungsklasse nicht mehr vom Typ int. Auf diese Weise treten keine Kompilierungsfehler auf, selbst wenn jeder Aufzählungskonstante nicht explizit ein Wert zugewiesen wird.
Beachten Sie, dass auf Enumerationskonstanten, die mithilfe von Enumerationsklassen definiert wurden, mit dem Bereichsspezifizierer (::) zugegriffen werden muss. Zum Beispiel:
enum class Fruit {APPLE, BANANA, ORANGE, MANGO}; Fruit f = Fruit::BANANA;
Zu diesem Zeitpunkt sollte der Wert von f der Wert der BANANA-Konstante in der Fruit-Aufzählungsklasse sein. Dadurch vermeiden wir den Fehler „Deklaration von Aufzählungen nicht ganzzahliger Typen ist nicht zulässig“ bei der Definition eines Aufzählungstyps.
Fazit
In C++ ist der Aufzählungstyp ein häufig verwendeter Datentyp, mit dem einige Werte problemlos als aufzählbare Liste definiert werden können. Bei der Verwendung von Aufzählungstypen kann es jedoch zu einem Kompilierungsfehler „Deklaration von Aufzählungen nicht ganzzahliger Typen ist nicht zulässig“ kommen. Zu diesem Zeitpunkt können wir dieses Problem lösen, indem wir die neue Aufzählungsklasse in C++ 11 verwenden, um Kompilierungsfehler beim Definieren von Aufzählungstypen zu vermeiden.
Das obige ist der detaillierte Inhalt vonC++-Fehler: Die Deklaration von Aufzählungen nicht ganzzahliger Typen ist nicht zulässig. Wie soll ich sie ändern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!