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 :Une fois cela fait, si je détruis (sortie de fonction par exemple) mes 2 instances d'objets, mon tableau est mal en point
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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);
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 :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...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); }
Où c'est qu'c'est donc que j'me suis planté s'i'ou plait ?![]()







Répondre avec citation


Partager