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é:

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; };
}
Ensuite je créé un objet C et affecte une valeur à la variable membre 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:
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();
    }
}
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.

En espérant avoir été clair. Si quelqu'un pouvait éclairé ma lanterne.

Merci.