Programación General > C/C++

 Duda de programación orientada a objetos

(1/1)

Mikan:
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
{
void preHazCosas()
{
...
HazCosas();}
void HazCosas(); // Esta función no puede ser virtual pura.}
// Clase Hijo 1
class CHijo1:: public CPadre
{
virtual void HazCosas1(){...}}
// Clase Hijo 2
class CHijo2::public CHijo2
{
virtual void HazCosas2(){...}}

Si me creo un objeto tipo Hijo1, y hago Hijo1.preHazCosas(), el código hace lo que espero:1
1. Llama la función preHazCosas del padre.
2. Llama a la función HazCosas del hijo1.Perfecto! Justo lo que quiero es este comportamiento.

Ahora el problema... Si me creo un vector de elementos tipo padre:
vector<CPadre> myVector;Añado elementos así:
myVector.push_back( CHijo1() );
myVector.push_back( CHijo2() );...

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!

Radger:
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

Mikan:
Exacto, era tal y como dices!
Gracias, ahora ya me funciona bien.

Navegación

[0] Índice de Mensajes

Ir a la versión completa