Warum enum class als sicherer gilt als normales enum in C++?
Hallo zusammen! Ich habe kürzlich angefangen, C++ zu lernen, und bin auf Aufzählungen gestoßen. Ich weiß, dass es zwei Möglichkeiten gibt, sie zu deklarieren: das gute alte `enum` und das neue `enum class` (seit C++11). Ich habe gelesen, dass `enum class` „sicherer“ ist, verstehe aber nicht ganz, worin der Unterschied in der Praxis besteht.
Hier ist ein Beispiel, das ich geschrieben habe:
```cpp
enum Color { RED, GREEN, BLUE };
enum TrafficLight { RED, GREEN, YELLOW }; // Fehler: Neudeklaration von RED und GREEN
int main() {
Color c = RED;
TrafficLight t = RED; // Ich hatte erwartet, dass das funktioniert, aber...
return 0;
}
```
Ich hatte sofort Probleme: Ich kann keine zwei Aufzählungen mit denselben Elementnamen deklarieren, und der Compiler meckert. Außerdem habe ich bemerkt, dass ich so etwas schreiben kann:
```cpp
int x = RED; // Das funktioniert, aber ist das normal? RED ist doch sinngemäß keine Zahl.
if (c == 0) { ... } // Ich vergleiche eine Farbe mit einer Zahl – ist das überhaupt erlaubt?
```
Könnt ihr mir bitte erklären, wie mir `enum class` helfen kann? Wie löst es diese Probleme? Und wenn
Noch keine Antworten.
Anmelden um eine Antwort zu hinterlassen