je les deux classes suivantes, on hérite de l'autreC++ héritage, les fonctions de base continuent d'être appelés lorsque overriden
Class A{
void print(){cout << "A" << endl;}
}
Class B : A{
void print(){cout << "B" << endl;}
}
Class C : A{
void print(){cout << "C" << endl;}
}
Puis dans une autre classe que je donne les résultats suivants:
vector<A> things;
if (..)
things.push_back(C());
else if (..)
things.push_back(B());
things[0].print();
ce toujours A
Je voudrais imprimer B ou C en fonction de ce que j'ai ajouté au vecteur
Comment est-ce que je fais cela?
J'ai essayé l'abstraction mais je ne suis pas entièrement sûr de l'utiliser en C++ et cela n'a pas fonctionné pour moi
Gardez à l'esprit que si des exceptions se produisent pendant l'utilisation du vecteur, vous aurez une fuite. Une solution est bien sûr d'utiliser la bibliothèque de pointeurs de Boost. Mais si ce n'est pas possible, une solution très simple pourrait être de créer une classe 'pointer_vector' qui a un «vecteur » privé auquel vous pouvez accéder avec une fonction 'get'. Le destructeur de cet encapsuleur effectue les suppressions.Maintenant, les objets sont garantis pour être supprimés. –
GManNickG