cpp / intermediate
Snippet
Bereichsbezogene Enumerationen für Typsicherheit
Im Gegensatz zu herkömmlichen Enums im C-Stil verhindert 'enum class' Namenskollisionen und versehentliche implizite Konvertierungen in Integer, was eine stärkere Typsicherheit bietet.
snippet.cpp
cpp
1
2
3
4
5
6
7
8
9
10
11
12
enum class TrafficLight { Red, Yellow, Green };int main() {TrafficLight signal = TrafficLight::Red;// if (signal == 0) // Error: No implicit conversion to intif (signal == TrafficLight::Red) {return 0;}return 1;}
Erklärung
1
enum class TrafficLight
Deklariert eine bereichsbezogene Enumeration, die das Präfix 'TrafficLight::' erfordert.
2
if (signal == 0)
Diese Zeile ist ungültig, da sich bereichsbezogene Enums nicht automatisch in numerische Typen umwandeln.