Héritage et constructeur par copie
Bonjour à tou(te)s,
J'ai un petit souci de compréhension :)
J'ai une classe de base, et plusieurs classes qui hérite de celle-ci ou les unes des autres.
J'ai un tableau (std::vector) qui contient des pointeurs sur ma classe de base afin que je puisse y stocker n'importe quelle classe, ca c'est l'avantage de l'héritage.
Mon problème, lorsque je remplis ce tableau, je souhaite que le tableau contienne complètement les objets. Exemple, car c'est pas clair :
Code:
1 2 3 4
| cBase * objet1; // ma classe de base
monTableau.Add (objet1); //monTableau est une classe qui gère tout, et qui contient mon vecteur d'objets
cSousBase* objet2; // cette classe hérite de ma classe de base
monTableau.push_back (objet2); |
Une fois cela fait, si je détruis (sortie de fonction par exemple) mes 2 instances d'objets, mon tableau est mal en point :)
Je voudrais donc garder la même utilisation, mais dans la méthode Add faire une copie de l'objet avant de l'ajouter à mon tableau :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| //au lieu d'un bête
Add (cBase* o)
{
monVecteur.push_back (o);
}
//Avoir un truc genre
Add (cBase* o)
{
//copie de l'objet
o2 = (*o);
//puis ajout de o2, ainsi o peut être détruit sans que cela me gêne
monVecteur.push_back (&o2);
} |
Mon problème c'est que ma méthode Add récupère un pointeur sur ma classe de base et le constructeur par copie qui est appelé est celui de ma classe de base et pas du tout celui de ma classe héritante. Ben oui, car je ne sais pas quelle classe est o et donc o2. Cela se passera donc bien pour objet1 mais pas pour objet2...
Où c'est qu'c'est donc que j'me suis planté s'i'ou plait ? :)