bad_cast, exception
L’exception bad_cast est levée par l’opérateur dynamic_cast
en raison d’un cast ayant échoué vers un type de référence.
Syntaxe
catch (bad_cast)
statement
Notes
L’interface de bad_cast est la suivante :
class bad_cast : public exception
Le code suivant contient un exemple d’échec dynamic_cast
qui lève l’exception bad_cast .
// expre_bad_cast_Exception.cpp
// compile with: /EHsc /GR
#include <typeinfo>
#include <iostream>
class Shape {
public:
virtual void virtualfunc() const {}
};
class Circle: public Shape {
public:
virtual void virtualfunc() const {}
};
using namespace std;
int main() {
Shape shape_instance;
Shape& ref_shape = shape_instance;
try {
Circle& ref_circle = dynamic_cast<Circle&>(ref_shape);
}
catch (bad_cast b) {
cout << "Caught: " << b.what();
}
}
L’exception est levée, car l’objet en cours de cast (forme) n’est pas dérivé du type de cast spécifié (Circle). Pour éviter l'exception, ajoutez les déclarations ci-dessous à main
:
Circle circle_instance;
Circle& ref_circle = circle_instance;
Ensuite, inversez le sens de la conversion dans le try
bloc comme suit :
Shape& ref_shape = dynamic_cast<Shape&>(ref_circle);
Membres
Constructeurs
Constructeur | Description |
---|---|
bad_cast | Constructeur des objets de type bad_cast . |
Functions
Fonction | Description |
---|---|
Quel | À définir |
Opérateurs
Opérateur | Description |
---|---|
operator= | Opérateur d’affectation qui attribue un objet à un bad_cast autre. |
bad_cast
Constructeur des objets de type bad_cast
.
bad_cast(const char * _Message = "bad cast");
bad_cast(const bad_cast &);
opérateur =
Opérateur d’affectation qui attribue un objet à un bad_cast
autre.
bad_cast& operator=(const bad_cast&) noexcept;
quoi
const char* what() const noexcept override;
Voir aussi
dynamic_cast, opérateur
Mots clés
Meilleures pratiques C++ modernes pour la gestion des exceptions et des erreurs
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour