0 Tage Serie
cpp / intermediate
Snippet

Gekapselte Enumerationen für explizite Zustände

Gekapselte Enumerationen ('enum class') verhindern Namenskollisionen, indem sie den Scope-Operator erfordern. Sie sind außerdem streng typisiert, d. h. sie werden nicht implizit in Integer konvertiert, wodurch häufige Logikfehler bereits beim Kompilieren abgefangen werden.

snippet.cpp
cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
enum class ConnectionStatus {
Disconnected,
Connecting,
Connected
};
int main() {
ConnectionStatus current = ConnectionStatus::Connecting;
// Strongly typed: cannot be implicitly compared to integers
if (current == ConnectionStatus::Connecting) {
std::cout << "Establishing link..." << std::endl;
}
return 0;
}
Erklärung
1
enum class ConnectionStatus
Definiert ein Scoped Enum. Werten muss 'ConnectionStatus::' vorangestellt werden.