Ver Mensaje Individual
  #2 (permalink)  
Antiguo 18/07/2011, 00:27
CalgaryCorpus
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 16 años, 5 meses
Puntos: 61
Respuesta: Method overriding, Herencia y Vector.

El problema esta en que push_back() inserta copias de los elementos, y al hacer el vector un vector de acciones, se invoca el constructor de copia de la clase base.

Alternativa:
Hacer vector de punteros a accion

vector<accion*> v;

y en la clase base cambiar

void ejecutar();

por

virtual void ejecutar();

Al hacer push_back, cambias a insertar las direcciones de memoria

v.push_back( a ) cambia a v.push_back( &a )

Al invocar,

v[i].metodo() cambia a v[i]->metodo