Bonjours à tous. Voici mon problème sur lequel je bûche depuis quelques soirs déjà.
J'ai trois classes: cA, cB et cC définies comme suit - je précise que chaque classe est composée d'un fichier en-tête (*.h) et d'un fichier de définition du contenu des fonctions (*.cpp) et que tout a été rassemblé ici pour plus de clarté:
Ensuite je créé un objet C et affecte une valeur à la variable membre m_i.
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
27
28
29
30
31 class cA { public: cA(); ~cA(); void AjouterB( cB &B ){ m_A.push_back( B ); }; std::list<cB> m_A; } class cB { public: cB(); ~cB(); void AjouterC( cC &C ){ m_B.push_back( C ); }; std::list<cC> m_B; } class cC { private: int m_i; public: cC(){ m_i = 0; }; ~cC(); void MettreLaValeurDeIA( int i ){ m_i = i; }; int I(){ return m_i; }; }
Puis je créé un objet B auquel j'ajoute l'objet précédemment créé - l'objet C donc - via la fonction AjouterC().
Enfin je créé un objet A auquel j'ajoute l'objet B via la fonction AjouterB().
Dans mon programme, l'objet A contient plusieurs objets B contenant eux-mêmes plusieurs objets C.
Pour tout parcourir, j'utilise le code suivant:
Je pensais - peut-être à tort - que j'obtiendrais la valeur que j'avais passer à m_i. Or je me retrouve avec la valeur 0, celle de l'initialisation de l'objet C.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 std::list<cB>::iterator iter_B; for( iter_B = m_A.begin(); iter_B != m_A.end(); iter_B++) { std::list<cC>::iterator iter_C; for( iter_C = (*iter_B).m_B.begin(); visee != (*iter_B).m_B.end(); iter_C++) { cout << (*iter_C).I(); } }
En espérant avoir été clair. Si quelqu'un pouvait éclairé ma lanterne.
Merci.
Partager