Векторы и полиморфизм в C ++
У меня сложная ситуация. Его упрощенная форма примерно такая
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; }
};
А потом в одном классе я делаю что-то вроде ...
void some_method()
{
vector v;
Instruction* i = new Add(1,2,3)
v.push_back(*i);
}
И в еще одном классе ...
void some_other_method()
{
Instruction ins = v.back();
ins.execute();
}
И они так или иначе разделяют этот вектор Инструкции. Моя забота - это та часть, где я делаювыполнить» функция. Это будет работать? Сохранит ли он свой тип Add?