std:: bad_cast
|
Défini dans l'en-tête
<typeinfo>
|
||
|
class
bad_cast
:
public
std::
exception
|
||
Une exception de ce type est levée lorsqu'un dynamic_cast vers un type référence échoue le contrôle à l'exécution (par exemple, car les types ne sont pas liés par héritage), et également par std::use_facet si le facet demandé n'existe pas dans la locale.
Diagramme d'héritage
Table des matières |
Fonctions membres
|
(constructeur)
|
construit un nouvel objet
bad_cast
(fonction membre publique) |
|
operator=
|
remplace l'objet
bad_cast
(fonction membre publique) |
|
what
|
retourne la chaîne explicative
(fonction membre publique) |
std::bad_cast:: bad_cast
| (1) | ||
|
bad_cast
(
)
throw
(
)
;
|
(jusqu'à C++11) | |
|
bad_cast
(
)
noexcept
;
|
(depuis C++11)
(constexpr depuis C++26) |
|
| (2) | ||
|
bad_cast
(
const
bad_cast
&
other
)
throw
(
)
;
|
(jusqu'à C++11) | |
|
bad_cast
(
const
bad_cast
&
other
)
noexcept
;
|
(depuis C++11)
(constexpr depuis C++26) |
|
Construit un nouvel objet
bad_cast
avec une chaîne d'octets terminée par un caractère nul définie par l'implémentation, accessible via
what()
.
std::bad_cast
alors
std::
strcmp
(
what
(
)
, other.
what
(
)
)
==
0
.
(depuis C++11)
Paramètres
| other | - | un autre objet exception à copier |
std::bad_cast:: operator=
|
bad_cast
&
operator
=
(
const
bad_cast
&
other
)
throw
(
)
;
|
(jusqu'à C++11) | |
|
bad_cast
&
operator
=
(
const
bad_cast
&
other
)
noexcept
;
|
(depuis C++11)
(constexpr depuis C++26) |
|
Assigne le contenu avec celui de
other
.
Si
*
this
et
other
ont tous deux le type dynamique
std::bad_cast
alors
std::
strcmp
(
what
(
)
, other.
what
(
)
)
==
0
après l'assignation.
(depuis C++11)
Paramètres
| other | - | un autre objet d'exception à assigner |
Valeur de retour
* this
std::bad_cast:: what
|
virtual
const
char
*
what
(
)
const
throw
(
)
;
|
(jusqu'à C++11) | |
|
virtual
const
char
*
what
(
)
const
noexcept
;
|
(depuis C++11)
(constexpr depuis C++26) |
|
Retourne la chaîne explicative.
Valeur de retour
Pointeur vers une chaîne terminée par un caractère nul, définie par l'implémentation, contenant des informations explicatives. La chaîne est adaptée à la conversion et à l'affichage en tant que std::wstring . Le pointeur est garanti d'être valide au moins jusqu'à la destruction de l'objet exception duquel il est obtenu, ou jusqu'à l'appel d'une fonction membre non constante (par exemple, l'opérateur d'affectation par copie) sur l'objet exception.
|
La chaîne retournée est encodée avec l'encodage littéral ordinaire pendant l'évaluation constante. |
(depuis C++26) |
Notes
Les implémentations sont autorisées mais non obligées de redéfinir
what()
.
Hérité de std:: exception
Fonctions membres
|
[virtual]
|
détruit l'objet exception
(fonction membre publique virtuelle de
std::exception
)
|
|
[virtual]
|
retourne une chaîne explicative
(fonction membre publique virtuelle de
std::exception
)
|
Notes
| Macro de test de fonctionnalité | Valeur | Std | Fonctionnalité |
|---|---|---|---|
__cpp_lib_constexpr_exceptions
|
202411L
|
(C++26) | constexpr pour les types d'exception |
Exemple
#include <iostream> #include <typeinfo> struct Foo { virtual ~Foo() {} }; struct Bar { virtual ~Bar() { std::cout << "~Bar\n"; } }; struct Pub : Bar { ~Pub() override { std::cout << "~Pub\n"; } }; int main() { Pub pub; try { [[maybe_unused]] Bar& r1 = dynamic_cast<Bar&>(pub); // OK, upcast [[maybe_unused]] Foo& r2 = dynamic_cast<Foo&>(pub); // throws } catch (const std::bad_cast& e) { std::cout << "e.what(): " << e.what() << '\n'; } }
Sortie possible :
e.what(): std::bad_cast ~Pub ~Bar