Heim  >  Artikel  >  Backend-Entwicklung  >  C++-Syntaxfehler: Aufzählungsmitglieder müssen in Klammern initialisiert werden. Was soll ich tun?

C++-Syntaxfehler: Aufzählungsmitglieder müssen in Klammern initialisiert werden. Was soll ich tun?

WBOY
WBOYOriginal
2023-08-22 15:41:04806Durchsuche

C++-Syntaxfehler: Aufzählungsmitglieder müssen in Klammern initialisiert werden. Was soll ich tun?

C++ ist eine gängige Programmiersprache, deren Syntax relativ streng und leicht zu erlernen und anzuwenden ist. Bei der spezifischen Programmierung ist es jedoch unvermeidlich, auf verschiedene Fehler zu stoßen. Einer der häufigsten Fehler ist „Aufzählungsmitglieder müssen in Klammern initialisiert werden“.

In C++ ist der Aufzählungstyp ein sehr praktischer Datentyp, der eine Reihe von Konstanten mit diskreten Werten definieren kann, wie zum Beispiel:

enum Color {RED, YELLOW, GREEN};

In diesem Beispiel definieren wir einen Aufzählungstyp Color, der drei Aufzählungskonstanten enthält: RED , GELB und GRÜN. Standardmäßig sind die Werte der Aufzählungskonstanten 0, 1 und 2.

Wenn wir jedoch einer Aufzählungskonstante einen speziellen Wert zuweisen möchten, müssen wir ihn in Klammern initialisieren, wie zum Beispiel:

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

In diesem Beispiel definieren wir einen Aufzählungstyp ErrorCode, der drei Aufzählungskonstanten enthält: OK, ERROR_FILE_NOT_FOUND und ERROR_OUT_OF_MEMORY. Unter diesen ist der Wert von OK 0, der Wert von ERROR_FILE_NOT_FOUND ist 2 und der Wert von ERROR_OUT_OF_MEMORY ist 5.

Allerdings vergessen wir manchmal, beim Definieren von Aufzählungskonstanten zu initialisieren, und es tritt der Fehler „Aufzählungsmitglieder müssen in Klammern initialisiert werden“ auf. Dieser Fehler tritt beispielsweise im folgenden Code auf:

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

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

In diesem Beispiel definieren wir einen Aufzählungstyp Direction, der vier Aufzählungskonstanten enthält: UP, DOWN, LEFT und RIGHT. Gleichzeitig weisen wir UNKNOWN den Sonderwert -1 zu. Da wir jedoch vergessen haben, bestimmte Werte für UP, DOWN, LEFT und RIGHT anzugeben, meldet der Compiler die Fehlermeldung „Enum-Mitglieder müssen in Klammern initialisiert werden“.

Wie sollen wir also mit diesem Fehler umgehen? Eine einfache Möglichkeit besteht darin, einen bestimmten Wert für alle Enum-Konstanten anzugeben, z. B.:

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

In diesem Beispiel geben wir bestimmte Werte für alle Enum-Konstanten an, damit der Compiler keinen Fehler auslöst.

Eine andere Methode ist die Verwendung der neu eingeführten Enum-Klasse in C++11. Die Aufzählungsklasse ist ein typsicherer Aufzählungstyp, der alle Aufzählungskonstanten dazu zwingt, einen bestimmten Typ anzugeben, und der Umfang der Aufzählungskonstanten ist auf den Aufzählungstyp beschränkt. Zum Beispiel:

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

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

In diesem Beispiel definieren wir den Klassentyp Direction of enum, der den Typ der Aufzählungskonstante als int angibt. Gleichzeitig geben wir für UNKNOWN einen Sonderwert -1 an. Wenn wir Aufzählungskonstanten verwenden, müssen wir das Präfix des Aufzählungstyps hinzufügen, z. B. Direction::LEFT. Auf diese Weise wird der Compiler keinen Fehler auslösen, selbst wenn wir vergessen, einen bestimmten Wert für eine Aufzählungskonstante anzugeben.

Zusammenfassend lässt sich sagen, dass das Problem, dass Aufzählungsmitglieder in C++ in Klammern initialisiert werden müssen, durch die Angabe eines bestimmten Werts für alle Aufzählungskonstanten oder die Verwendung des Aufzählungsklassentyps gelöst werden kann. Wir sollten diese Art von Fehlern beim Programmieren vermeiden, um die Korrektheit und Robustheit des Programms sicherzustellen.

Das obige ist der detaillierte Inhalt vonC++-Syntaxfehler: Aufzählungsmitglieder müssen in Klammern initialisiert werden. Was soll ich tun?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn