Supongamos que me dan una biblioteca C++ llena de herencia. Me dan un Base*
en una función cuando sé que en realidad apunta a un objeto Derived
y Derived
hereda Base
. Pero no sé qué tipo de herencia es (público/protegido/privado). Tampoco sé si hay alguna función virtual en la jerarquía.static_cast vs dynamic_cast
Ante esta situación, sin mirar en el código fuente y/o documentación deBase
y Derived
, que echo debo usar? ¿O debería consultar primero el código/la documentación para asegurarme acerca del polimorfismo?
Antecedentes
estoy escribiendo changeEvent
función de QMainWindow
en Qt 4.7. La función changeEvent
toma QEvent*
que puedo convertir a otro tipo conociendo QEvent::type()
. Me preguntaba si debería usar static_cast
o dynamic_cast
.
Gracias.
Si alguna biblioteca que usa usa herencia 'protected', es hora de encontrar una mejor biblioteca escrita. –
Esta pregunta podría ayudar: http://stackoverflow.com/questions/28002/regular-cast-vs-static-cast-vs-dynamic-cast –
@Zac: Desearía poder rechazar los comentarios. ¿Cómo puede juzgar si la herencia protegida es la herramienta adecuada para el trabajo si no sabe lo que hace esa biblioteca? – Puppy