Je reviens vers vous, car j'ai toujours une petite chose qui m'inquiète, quand aux pointeurs...
Pourtant, lorsque je passe un même pointeur d'un endroit à un autre, il se passe des choses étranges, a savoir il fait planter, selon l'ordre dans lequel je le passe...Un peu de code pour tenter d'être plus clair:Citation:
Un objet en C++ ne change pas d'adresse.
Un exemple très simple:Code:
1
2
3
4
5
6 void NiveauTest::recoitAfficheur(Afficheur *afficheur) { m_afficheur = afficheur; m_decor1.recoitAfficheur(afficheur); }
m_afficheur, n'est autre qu'un pointeur "Afficheur *m_afficheur" situé dans les attributs private de l'objet NiveauTest.
Quand, donc, j'envoi ce pointeur a mon objet m_decor1 ainsi, (il sera également transmis par la suite à d'autres objets), cela fonctionne parfaitement.
En revanche, si je fais, par exemple ceci:
...Il plante.Code:
1
2
3
4
5
6 void NiveauTest::recoitAfficheur(Afficheur *afficheur) { m_afficheur = afficheur; m_decor1.recoitAfficheur(m_afficheur); }
Pourquoi, selon vous? L'objet afficheur n'a pourtant pas changé d'adresse, il est le même, et m_afficheur, n'est qu'un pointeur, donc une variable sensée mémoriser une adresse.
Le plus étonnant, c'est que dans d'autres objets, qui sont construits sur le même modèle (sauf erreur), ça marche sans planter.
Voilà. Bien sur, je peux bidouiller pour que ça fonctionne, mais cela suscite tout de même des inquiétudes quand à la fiabilité de mon programme.
Merci si pouvez m'aider.