0 Tage Serie
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 int
if (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.