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()
{
}
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:
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!