0 Tage Serie
cpp / intermediate
Snippet

Streng typisierte gekapselte Aufzählungen

Gekapselte Aufzählungen (enum class) verhindern Namenskollisionen, indem sie den Enum-Namen als Präfix erfordern. Im Gegensatz zu traditionellen Enums konvertieren sie nicht implizit in Ganzzahlen, was die Typsicherheit erzwingt und versehentliche mathematische Operationen auf symbolischen Konstanten verhindert.

snippet.cpp
cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
enum class SecurityLevel {
Low,
Medium,
High
};
int main() {
SecurityLevel current = SecurityLevel::Medium;
// Comparison requires explicit scope
if (current == SecurityLevel::Medium) {
std::cout << "Level is balanced." << std::endl;
}
// Error: int x = current; // No implicit conversion to int
return 0;
}
Erklärung
1
enum class SecurityLevel
Deklariert eine gekapselte Aufzählung, die einen eigenen Namensraum für ihre Werte erstellt.
2
SecurityLevel::Medium
Greift über den Bereichsauflösungsoperator auf den Enum-Wert zu.