std::bad_function_call
| Definiert in der Header-Datei <functional> |
||
| class bad_function_call; |
||
std::bad_function_call ist der Typ der Ausnahme, die von std::function::operator() ausgelöst wird, wenn der Funktions-Wrapper kein Ziel hat.
Vererbungdiagramm
Inhalt |
[edit] Member-Funktionen
| (Konstruktor) |
konstruiert ein neues bad_function_call-Objekt(öffentliche Memberfunktion) |
| operator= |
ersetzt das bad_function_call-Objekt(öffentliche Memberfunktion) |
| what |
gibt den erklärenden String zurück (öffentliche Memberfunktion) |
std::bad_function_call::bad_function_call
| bad_function_call() noexcept; |
(1) | (seit C++11) |
| bad_function_call( const bad_function_call& other ) noexcept; |
(2) | (seit C++11) |
Konstruiert ein neues bad_function_call-Objekt mit einem implementierungsdefinierten, nullterminierten Byte-String, der über what() zugänglich ist.
std::bad_function_call haben, dann gilt std::strcmp(what(), other.what()) == 0.Parameter
| Sonstiges | - | ein anderes Ausnahmeobjekt zum Kopieren |
std::bad_function_call::operator=
| bad_function_call& operator=( const bad_function_call& other ) noexcept; |
(seit C++11) | |
Weist den Inhalt von other zu. Wenn *this und other beide den dynamischen Typ std::bad_function_call haben, dann gilt std::strcmp(what(), other.what()) == 0 nach der Zuweisung.
Parameter
| Sonstiges | - | ein anderes Ausnahmeobjekt zum Zuweisen |
Rückgabewert
*this
std::bad_function_call::what
virtual const char* what() const noexcept; |
(seit C++11) | |
Gibt den erklärenden String zurück.
Rückgabewert
Zeiger auf einen implementierungsdefinierten, nullterminierten String mit erläuternden Informationen. Der String kann für die Konvertierung und Anzeige als std::wstring verwendet werden. Der Zeiger ist garantiert gültig, mindestens bis das Ausnahmeobjekt, von dem er stammt, zerstört wird, oder bis eine nicht-const Memberfunktion (z. B. der Kopierzuweisungsoperator) für das Ausnahmeobjekt aufgerufen wird.
|
Der zurückgegebene String ist während der konstanten Auswertung mit der gewöhnlichen Literal-Codierung kodiert. |
(seit C++26) |
Anmerkungen
Implementierungen dürfen what() überschreiben, sind aber nicht dazu verpflichtet.
Abgeleitet von std::exception
Memberfunktionen
| [virtuell] |
zerstört das Ausnahmeobjekt (virtuelle öffentliche Memberfunktion von std::exception) |
| [virtuell] |
gibt einen erklärenden String zurück (virtuelle öffentliche Memberfunktion von std::exception) |
[edit] Beispiel
#include <functional> #include <iostream> int main() { std::function<int()> f = nullptr; try { f(); } catch (const std::bad_function_call& e) { std::cout << e.what() << '\n'; } }
Mögliche Ausgabe
bad function call
[edit] Defect Reports
Die folgenden Verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | angewendet auf | Verhalten wie veröffentlicht | Korrigiertes Verhalten |
|---|---|---|---|
| LWG 2233 | C++11 | what() gab immer die gleiche erklärendeZeichenkette wie std::exception::what() zurück. |
gibt die eigene zurück. erklärende Zeichenkette |
[edit] Siehe auch
| (C++11) |
kopierfähiger Wrapper für jedes kopierkonstruierbare aufrufbare Objekt (Klassen-Template) |