Pointeur change entre constructeur et méthode :x
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:
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:
1 2 3 4
|
0xAAAAAAAA 0xBBBBBBBB 0xCCCCCCCC
0xDDDDDDDD 0xEEEEEEEE 0xFFFFFFFF
0xAAAAAAAA 0xBBBBBBBB 0xCCCCCCCC |
or, le constructeur de D:
Code:
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:
1 2
|
0xAAAAAAAA 0xBBBBBBBB 0xCCCCCCCC |
Comment cela se fait-il ? :x
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