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:

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;
}
me renvoi un truc du style:

Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
 
0xAAAAAAAA 0xBBBBBBBB 0xCCCCCCCC
0xDDDDDDDD 0xEEEEEEEE 0xFFFFFFFF
0xAAAAAAAA 0xBBBBBBBB 0xCCCCCCCC
or, le constructeur de D:

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;
}
me renvoi bien

Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
 
0xAAAAAAAA 0xBBBBBBBB 0xCCCCCCCC
Comment cela se fait-il ?

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