SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: Mikan en Domingo 1 de Agosto de 2010, 16:12

Título: Duda de programación orientada a objetos
Publicado por: Mikan en Domingo 1 de Agosto de 2010, 16:12
A ver si me podeis ayudar por favor que creo que me he liado con la programación orientada a objetos.
Tengo una clase padre, tal que así:

class CPadre
{
}
// Clase Hijo 1
class CHijo1:: public CPadre
{
}
// Clase Hijo 2
class CHijo2::public CHijo2
{
}

Si me creo un objeto tipo Hijo1, y hago Hijo1.preHazCosas(), el código hace lo que espero:1
Perfecto! Justo lo que quiero es este comportamiento.

Ahora el problema... Si me creo un vector de elementos tipo padre:
Añado elementos así:
...

Pero ahora si hago:
myVector[1].preHazCosas();
Llama a la función preHazCosas del padre, y la función HazCosas del padre.

Como puedo hacer al recuperar el objeto del vector, que es un CHijo1? Supongo que es con un cast pero no veo como!
Gracias por avanzado!
Título: Re: Duda de programación orientada a objetos
Publicado por: Radger en Lunes 2 de Agosto de 2010, 11:23
Buenas

El problema es que no creas punteros.Prueba con:

vector<CPadre*> myVector;

myVector.push_back(new CHijo1() );
myVector.push_back(new CHijo2() );

myVector[1]->preHazCosas();

Saludos
Título: Re: Duda de programación orientada a objetos
Publicado por: Mikan en Lunes 2 de Agosto de 2010, 20:04
Exacto, era tal y como dices!
Gracias, ahora ya me funciona bien.