dynamic_cast (Problema con)

29/04/2004 - 02:43 por PabloLFC | Informe spam
quiero listar un conjunto de vehículos que guardé en una lista simplemente
enlazada que guarda objetos de la clase cVehiculo.
las clases herederas de cVehiculo son cAuto, cCamion, etc
el ms visual c++ me tira un error (una excepcion o algo asi) en la linea del
1er if, creo que a causa del dynamic_cast. alguien puede explicarme en qué
me estoy equivocando?
gracias!
Pablo Tortorella
pd. les paso las líneas de las que les hablo

void cIterador::listar()
{
setNodoActual(_lista.getPrimero());
while (getNodoActual() != 0)
{
if(cAuto* a= dynamic_cast<cAuto *>((getNodoActual()->getVehiculo())))
a->mostrar();

setNodoActual(getNodoActual()->getSiguiente());
}
}

Preguntas similare

Leer las respuestas

#1 Cholo Lennon
29/04/2004 - 05:47 | Informe spam
Para que tu inquietud esté completa y podamos ayudarte te falta especificar
que tipo de error te genera el compilador:

Es posible que tu error se deba a alguna de estas 2 situaciones:

1- Compilar dynamic_cast falla porque la clase base CVehiculo no es
polimórfica, es decir no define al menos una función virtual.
2- Compilar dynamic_cast falla ya que el mismo requiere que esté activado el
RTTI del compilador, es decir la información de tipos en tiempo de
ejecución. En VC 6 estó se fija en Menú Project/Settings/C-C++/Category C++
Languaje/Enable Run-Time Type Information.

Saludos
Cholo Lennon
Salta, ARG
Respuesta Responder a este mensaje
#2 PabloLFC
29/04/2004 - 06:20 | Informe spam
Gracias cholo, faltaba activar el RTTI del compilador.
de todas formas, mientras esperaba una respuesta (llego rapido, x eso muchas
gracias!), hice un método virtual "mostrar" y llamé directamente a
vehiculo->mostrar() que mostraba el vehiculo segun la clase (cAuto, etc)
saludos,
PabloLFC (Pablo Tortorella)

"Cholo Lennon" escribió en el mensaje
news:O%
Para que tu inquietud esté completa y podamos ayudarte te falta


especificar
que tipo de error te genera el compilador:

Es posible que tu error se deba a alguna de estas 2 situaciones:

1- Compilar dynamic_cast falla porque la clase base CVehiculo no es
polimórfica, es decir no define al menos una función virtual.
2- Compilar dynamic_cast falla ya que el mismo requiere que esté activado


el
RTTI del compilador, es decir la información de tipos en tiempo de
ejecución. En VC 6 estó se fija en Menú Project/Settings/C-C++/Category


C++
Languaje/Enable Run-Time Type Information.

Saludos
Cholo Lennon
Salta, ARG


Respuesta Responder a este mensaje
#3 Cholo Lennon
29/04/2004 - 18:52 | Informe spam
En este caso el uso de funciones virtuales es una solución más apropiada que
dynamic_cast. El uso de RTTI debes dejarlo siempre como última técnica a
aplicar. Trata de utilizar chequeo de tipos en tiempo de compilación
(chequeo estático). Si esto no es posible, utiliza dynamic_cast y en
sucesión typeid.

Saludos
Cholo Lennon
Salta, ARG
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida