De acuerdo con lo que leí, realizar un dynamic_cast en tiempo de ejecución incorrecto puede arrojar una excepción bad_cast o devolver cero.¿Cómo falla dynamic_cast?
¿Es correcto decir que devolverá cero si está lanzando punteros?
es decir:
class Base { virtual void a(){} };
class Derived: public Base {};
int main() {
Base *base = new Base();
dynamic_cast<Derived*>(base);
return 0;
}
Y que va a lanzar una excepción bad_cast al lanzar objetos?
es decir:
class Base { virtual void a(){} };
class Derived: public Base {};
int main() {
Base base;
Base& ref = base;
dynamic_cast<Derived&>(ref);
return 0;
}
Ok, entonces la afirmación es correcta. Gracias. Edité el mensaje para hacer que la clase base sea polimórfica (agregando la función virtual) y usar la conversión de referencia para lanzar la excepción. – NIGO