Bonjour,
Je vous pose le probl�me.
J'ai une classe A, B, C et D. Le probl�me appara�t au niveau de la classe D.
A est la classe qui cr�er les instances des autres classes et fait les appels principaux.
Toutes les autres classes (B, C et D) poss�dent un pointeur vers la classe A. Cette adresse est pass�e via le constructeur.
� D on passe le pointeur vers A. et via ce pointeur on r�cup�re les adresses de B, C et D (via des appels vers A->get_b A->get_c etc..).
Lors de la cr�ation d'un objet D, les adresses pour les classes A, B et C sont correctement r�cup�r�es.
Cependant, lors de l'appel d'une des m�thodes de D, ces adresses ont visiblement chang�es, du moins elles pointent autre part.
Ce qui est �trange:
me renvoi un truc du style:
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12 B::methode_de_b() { std::cout << a << " " << b << " " << c << std::endl; d.methode_de_d(); std::cout << a << " " << b << " " << c << std::endl; } D::methode_de_d() { std::cout << a << " " << b << " " << c << std::endl; }
or, le constructeur de D:
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4 0xAAAAAAAA 0xBBBBBBBB 0xCCCCCCCC 0xDDDDDDDD 0xEEEEEEEE 0xFFFFFFFF 0xAAAAAAAA 0xBBBBBBBB 0xCCCCCCCC
me renvoi bien
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8 D::D( A* a ) { a = a_; b = a->get_b(); c = a->get_c(); std::cout << a << " " << b << " " << c << std::endl; }
Comment cela se fait-il ?
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2 0xAAAAAAAA 0xBBBBBBBB 0xCCCCCCCC
Le code source complet de mon projet est inclu en pi�ce jointe.
Les classes et m�thodes � regarder sont:
CGame::work et CPhysics::work
merci d'avance, car je coince depuis le d�but de la journ�e
source complets:
http://rapidshare.com/files/199687948/bnb.tar.bz2.html
Partager