Namespaces
Variants

std:: bad_function_call

From cppreference.net
Utilities library
Function objects
Function wrappers
(C++11)
(C++11)
bad_function_call
(C++11)
Function invocation
(C++17) (C++23)
Identity function object
(C++20)
Old binders and adaptors
( until C++17* )
( until C++17* )
( until C++17* )
( until C++17* )
( until C++17* ) ( until C++17* ) ( until C++17* ) ( until C++17* )
( until C++20* )
( until C++20* )
( until C++17* ) ( until C++17* )
( until C++17* ) ( until C++17* )

( until C++17* )
( until C++17* ) ( until C++17* ) ( until C++17* ) ( until C++17* )
( until C++20* )
( until C++20* )
Definiert in Header <functional>
class bad_function_call ;

std::bad_function_call ist der Typ der Ausnahme, die von std::function::operator() geworfen wird, wenn der Funktionswrapper kein Ziel besitzt.

cpp/error/exception std-bad function call-inheritance.svg

Vererbungsdiagramm

Inhaltsverzeichnis

Memberfunktionen

(Konstruktor)
konstruiert ein neues bad_function_call Objekt
(öffentliche Elementfunktion)
operator=
ersetzt das bad_function_call Objekt
(öffentliche Elementfunktion)
what
gibt den erläuternden String zurück
(öffentliche Elementfunktion)

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.

1) Standardkonstruktor.
2) Kopierkonstruktor. Wenn * this und other beide den dynamischen Typ std::bad_function_call haben, dann gilt std:: strcmp ( what ( ) , other. what ( ) ) == 0 .

Parameter

other - ein weiteres Ausnahmeobjekt zum Kopieren

std::bad_function_call:: operator=

bad_function_call & operator = ( const bad_function_call & other ) noexcept ;
(seit C++11)

Weist die Inhalte mit denen 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

other - ein weiteres 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 erklärenden Informationen. Der String ist geeignet für Konvertierung und Anzeige als std::wstring . Der Zeiger ist garantiert mindestens so lange gültig, bis das Ausnahmeobjekt, von dem er erhalten wurde, zerstört wird, oder bis eine nicht-konstante Memberfunktion (z.B. Kopierzuweisungsoperator) auf dem Ausnahmeobjekt aufgerufen wird.

Anmerkungen

Implementierungen dürfen, sind aber nicht verpflichtet, what() zu überschreiben.

Geerbt von std:: exception

Elementfunktionen

[virtual]
zerstört das Exception-Objekt
(virtuelle öffentliche Elementfunktion von std::exception )
[virtual]
gibt einen erklärenden String zurück
(virtuelle öffentliche Elementfunktion von std::exception )

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

Fehlerberichte

Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR Angewendet auf Verhalten wie veröffentlicht Korrektes Verhalten
LWG 2233 C++11 what() gab immer dieselbe erklärende
Zeichenkette wie std::exception::what() zurück
gibt ihre eigene
erklärende Zeichenkette zurück

Siehe auch

(C++11)
kopierbarer Wrapper für jedes kopierkonstruierbare aufrufbare Objekt
(Klassentemplate)