Bonjour,
J'ai besoin de faire un lien entre deux objets différents. C'est-à-dire qu'en partant d'un j'aimerais pouvoir atteindre l'autre et vice versa.
Il y a quand même une hiérarchie. Voila comment je m'y suis pris :
Child.hpp
Parent.hpp
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 class Parent; // Forward declaration (enfin j'imagine) class Child { private: Parent * m_myParent; public: Child (void); ~Child (void); setParent (Parent * myParent); /* Cette méthode ne devrait pas être appelée de manière publique (d'ailleurs ca m'ennuie un peu cette construction) */ Parent * getParent (void); }
Donc l'idée, c'est que quand j'ai un Parent, je lui attache un Child avec la méthode attachChild(). Dans cette méthode, j'appel setParent(this) pour créer le lien de Child vers Parent.
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 #include "Child.hpp" class Parent { private: std::vector< Child * > m_children; public: Parent (void); ~Parent (void); bool attachChild (Child * oneChild); // Appel de oneChild->setParent(this); }
Par contre, quand j'utilise getParent(), j'ai directement dans la méthode une "segmentation fault" au moment du "return m_myParent;"
Alors j'imagine que la manière dont je m'y prend doit être bancale.
Mais comment peut-on faire ce genre de mécanisme ?
Merci d'avance.
Partager