C++ estándar contiene varias clases de excepción integradas. typeinfo::bad_cast es uno de ellos. Esta es una excepción que se produce cuando falla la conversión dinámica. A continuación se muestra la sintaxis para el mismo:
Archivo de cabecera:
<typeinfo>
Sintaxis:
class bad_cast;
Nota: Para hacer uso de std::bad_cast , se deben configurar los bloques try and catch apropiados.
Valor devuelto: No devuelve nada.
A continuación se muestran los ejemplos para comprender mejor la implementación de std::bad_cast :
Programa 1:
// C++ code for std::bad_cast #include <bits/stdc++.h> #include <typeinfo> using namespace std; // Base Class class Base { virtual void member() {} }; // Derived Class class Derived : Base { }; // main() method int main() { // try block try { Base gfg; Derived& rd = dynamic_cast<Derived&>(gfg); } // catch block to handle the errors catch (bad_cast& bc) { cerr << "bad_cast caught: " << bc.what() << endl; } return 0; }
Producción:
bad_cast caught: std::bad_cast
Programa 2:
// C++ code for std::bad_cast #include <bits/stdc++.h> #include <typeinfo> using namespace std; // Base Class class Base { virtual void member() {} }; // Derived Class class Derived : Base { }; // main() method int main() { // try block try { Base geeksforgeeks; Derived& abc = dynamic_cast<Derived&>( geeksforgeeks); } // catch block to handle the errors catch (bad_cast& a) { cerr << "bad_cast caught: " << a.what() << endl; } return 0; }
Producción:
bad_cast caught: std::bad_cast
Referencia: http://www.cplusplus.com/reference/typeinfo/bad_cast/
Publicación traducida automáticamente
Artículo escrito por bansal_rtk_ y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA