0 Tage Serie
cpp / intermediate
Snippet

Funktionale Fehlerbehandlung mit Optional

std::optional repräsentiert einen Wert, der existieren kann oder nicht. Es ist eine sicherere Alternative zur Rückgabe von speziellen Fehlerwerten (wie -1) oder Null-Pointern, da es den Aufrufer zwingt, explizit zu prüfen, ob ein Wert vorhanden ist.

snippet.cpp
cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <optional>
std::optional<int> find_even(int value) {
if (value % 2 == 0) return value;
return std::nullopt;
}
int main() {
auto result = find_even(7);
if (result.has_value()) {
std::cout << "Found: " << *result << std::endl;
} else {
std::cout << "No even value found." << std::endl;
}
// Using value_or for a default fallback
std::cout << "Result or default: " << find_even(3).value_or(0) << std::endl;
return 0;
}
Erklärung
1
return std::nullopt;
Gibt explizit einen 'kein Wert'-Zustand zurück, um einen Fehler oder das Fehlen eines Wertes anzuzeigen.
2
find_even(3).value_or(0)
Gibt den enthaltenen Wert zurück, falls vorhanden, andernfalls den angegebenen Standardwert (0).