Bonjour,
Partant d'un code initial en C, j'ai voulu ecrire une classe C++ afin de pouvoir empiler des objets de celle-ci dans un vector de la STL.
Jusqu'ici ca va. j'ai bien lu la FAQ et j'ai reussi a cree mon vecteur et a faire des push_back de mes objets.
Mais la ou ca coince c'est pour les elements de ma classe que j'ai repris tels quels d'un code C, et qui sont des pointeurs sur structure. Un collegue m'a suggere que quand je faisais un push_back type:
ce que faisait la STL c d'abord appeler normalement le constructeur pour mon nouvel objet, puis tenter de copier son contenu dans le vector, et que dans cette operation les variables passeraient bien mais pas les pointeurs sur structure que j'ai, qui se metteraient a deconner.
Code : Sélectionner tout - Visualiser dans une fenêtre à part mon_vector.push_back(Ma_classe(mes_parametres));
Il m'a alors conseille de faire un vecteur non pas de la classe mais de pointeurs de la classe, c-a-d:
au lieu de :
Code : Sélectionner tout - Visualiser dans une fenêtre à part std::vector<Ma_classe*> mon_vector;
comme je fais actuellement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part std::vector<Ma_classe> mon_vector;
Le probleme, c'est que j'ai essaye, mais qu'en faisant comme conseille je n'arrive plus a acceder aux variables des objets crees dans mon vector, ca plante a la compilation. Alors que dans le deuxieme cas (vecteur de classe normal) ce n'est pas a la compilation, mais a l'execution que je me paie un segmentation fault parce que les pointeurs n'ont pas (ou mal) ete recopies...
Merci d'avance de votre aide, jsuis completement bloque, ce genre de pb me depasse... c dur de concilier C et C++ parfois...![]()
Partager