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
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);
}
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
 
#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);
}
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.

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.