Векторы и полиморфизм в 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?

Ответы на вопрос(4)

Ваш ответ на вопрос