Bonjour,
Mon probl�me est plut�t d�licat, je vais donc essay� d'�tre le plus clair possible.
Nous sommes entrain de faire la migration de nos projets de VS2005 � VS2010.
Nous avons:
* Un projet "core".
* Un projet "ui" qui permet de tester les fonctionnalit� du "core"
* Un projet "serveur" qui utilise le "core"
"ui" et "core" font parties de la m�me solution.
"server" link � la compilation avec les .lib de "core"
L'utilisation de "ui" et "core" fonctionne bien.
C'est l'utilisation de "server" qui pose probl�me.
Si le s�nario suivant ce produit: "server" instancie un objet "obj1core" appartenant � "core" et "obj1core" instancie lui m�me un objet "obj2core" appartenant �galement � "core".
Depuis le code de "server" nous pouvons demander � "obj1core" de nous retourner un pointeur sur "obj2core". Cela fonctionne, et le d�buguer nous montre que le pointeur pointe bien sur un espace m�moire allou�.
Par contre, si nous appelons une fonction sur "obj2core", disons "obj2core->anyFunc()", le this-pointeur � l'int�rieur de anyFunc() est nul.
Voici un petit exemple simplifi� (mais analogue) pour expliquer mon probl�me
Toute aide me sera tr�s utile et je vous en remercie d'avance
Code : S�lectionner tout - Visualiser dans une fen�tre � part
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
32
33
34
35
36
37
38
39 void aFuncInServer() { Obj1core o1; Obj2core *o2 = o1.getO2(); // Fonctionne, il est possible de parcourir o2 avec le débugueur o2->anyFunc() // Leve une exception "writing access violation", ca le 'this' pointeur est null dans anyFunc } class Obj1core { Obj2core *o2; public: Obj1core() { o2 = new Obj2core(); o2->anyFunc(); // Fonctionne, le résultat est visible au débugueur } Obj2core* getO2() {return o2;} [...] }; class Obj2core { char* str; public: Obj2core() { str = new char[5]; } anyFunc() { str[0] = 'c'; // Si l'appel vient de aFuncInServer 'this' est null, si l'appel vient de o1 'this' a la bonne valeur } }![]()
Partager