Vectores y polimorfismo en C ++
Tengo una situación complicada. Su forma simplificada es algo como esto.
class Instruction
{
public:
virtual void execute() { }
};
class Add: public Instruction
{
private:
int a;
int b;
int c;
public:
Add(int x, int y, int z) {a=x;b=y;c=z;}
void execute() { a = b + c; }
};
Y luego en una clase hago algo como ...
void some_method()
{
vector<Instruction> v;
Instruction* i = new Add(1,2,3)
v.push_back(*i);
}
Y en otra clase ...
void some_other_method()
{
Instruction ins = v.back();
ins.execute();
}
Y comparten este vector de instrucciones de alguna manera. Mi preocupación es la parte donde hago "ejecutar" la función. ¿Funcionará? ¿Conservará su tipo Add?