Imbrication de classe et conteneur list
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:
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:
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 :mrgreen: - 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. :ccool:
Merci.