Bon, je m'explique ;
suite à une implémentation de Garbage Collector enfin bref passons ; je viens de m'apercevoir que l'ordre de déclaration de l'implémentation d'interfaces dans une classe à une importance (chose que je n'ai jamais vue en C# et en Java).
Je m'explique, voilà mon exemple de code :
En voici l'utilisation :
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
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
Tout se passe impec quand je passe dans le constructeur de la variable mcqhddi, le this passé en paramètre de void AddElement (I1* param) a la même adresse que this c'est-à-dire adresse de this = adresse de param.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
Par contre, si j'inverse l'ordre d'implémentation des interfaces dans ma classe :
alors là dans le constructeur, je me retrouve avec un pointeur this qui est de 4 bits inférieur à la valeur de param. "Olé, c'est super !!!". Donc il doit y avoir un problème de vtbl, mon tableau de pointeur de fonctions virtuelles sur ma classe dépend de l'ordre de déclaration d'implémentation de mes interfaces dans cette classe. Ce qui me paraît plus que bizarre
Code : Sélectionner tout - Visualiser dans une fenêtre à part 
2
3
4
Je viens de me repencher sur le bouquin "Mieux développer avec C++" et sur le bouquin de Stroujstrup (excusez pour l'orthographe), rien pas d'indice.
Donc si vous pouviez m'éclairer et me dire si vous aviez déjà eu ce cas-là.
Ou bien alors quelque-chose m'échappe et merci de bien vouloir m'éclairerou alors ... tant pis


 

 
		
		 
         
 

 
			
			


 
   


 implémentation d'interfaces multiples : limitation de C++ ou du compilo VS2005 ?
 implémentation d'interfaces multiples : limitation de C++ ou du compilo VS2005 ?
				 Répondre avec citation
  Répondre avec citation
Partager