Vecteurs et le polymorphisme en C++

J'ai une situation délicate. Sa forme simplifiée est quelque chose comme cela

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;  }
};

Et puis dans une classe, je fais quelque chose comme...

void some_method()
{
    vector<Instruction> v;
    Instruction* i = new Add(1,2,3)
    v.push_back(*i);
}

Et encore une autre classe...

void some_other_method()
{
    Instruction ins = v.back();
    ins.execute();
}

Et ils partagent cette Instruction vecteur d'une certaine manière. Ma préoccupation est la partie où je fais "exécuter" de la fonction. Ça va fonctionner? Il conserver son Add type?

Eh bien, avez-vous l'essayer?
Lisez à propos de objet de découpage.
Permettez-moi de modifier certaines choses
Votre some_method() fuites de mémoire à chaque appel.
Changement de type de vecteur de pointeur de conteneur, et de supprimer la référence (*i). Et il va fonctionner.

OriginalL'auteur user44273 | 2013-04-21