Bonjour.
Voici le petit souci que je rencontre actuellement :
J'ai une classe classA qui a pour attribut une QList contenant des pointeurs vers des objets de classe classB (donc QList<classB *>).
Avec les accesseurs qui vont tout bien.
J'ai une classe classEngine qui contient une QList contenant des pointeurs vers des objets de classe classA.
Dans cette classe classEngine j'ai une fonction qui à le prototype suivant :
qui a pour but de me construire la liste des tous les elements de classB de mon application en parcourant la liste des elements de classA en recuperant leur liste de classB.
Code : Sélectionner tout - Visualiser dans une fenêtre à part QList<classB*> classEngine::getAllObjectsB() const
Voici son implémentation :
Je veux donc simplement récupèrer une liste contenant des pointeurs vers mes objets B.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 QList<classB*> classEngine::getAllObjectsB() const { classA * objectACourant; classB * objectBCourant; QList<classB *> retour; QListIterator<classA *> iterObjectClassA(this->getObjectClassAList()); while (iterObjectClassA.hasNext()) { // Recup objet courant de la liste objectACourant = iterObjectClassA.next(); // Iterateur sur la liste d'objet de type classB pour chaque objet de classA QListIterator<classB*> iterObjectClassB(objectACourant->getObjectClassBList()); while (iterObjectClassB.hasNext()) { objectBCourant = iterObjectClassB.next(); retour.push_back(objectBCourant); } } return retour; }
Le souci c'est que quand j'appelle cette fonction,
j'obtiens une erreur mémoire et l'appli crash.
J'ai ciblé l'erreur sur cette ligne :mais pour moi le push_back devrait agir comme si c'était une variable normale (un entier ou autre) mais apparemment il semble faire un peu plus que çà.
Code : Sélectionner tout - Visualiser dans une fenêtre à part retour.push_back(objectBCourant);
Avez vous une idée d'où cela peut provenir ? Je pense que je passe à côté de quelque chose, et cela doit être tellement énorme que je ne le vois pas. J'ai donc besoin d'un oeil frais qui ne rumine pas çà depuis des heures
Merci d'avance.
Partager