Avatar ·

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