Bonjour,

(Visual Studio 2005)

J'ai une classe d�clar�e :

Code : S�lectionner tout - Visualiser dans une fen�tre � part
public ref class MyClass{ ... }
Je voudrais r�cup�rer un pointeur void * d'une instance de cette classe. J'ai donc proc�d� ainsi :

Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
// je crée un IntPtr alloué avec la taille de l'objet dont je veux récupérer un pointeur
int rawsize =  sizeof( this );
IntPtr objectAddress = System::Runtime::InteropServices::Marshal::AllocHGlobal( rawsize ); 
 
// je convertis mon objet en IntPtr
System::Runtime::InteropServices::Marshal::StructureToPtr(this, (IntPtr)objectAddress, true);  
 
// et hop j'ai mon pointeur
void * ptr = (void *)objectAddress;
Mais � l'�x�cution du StructureToPtr j'obtiens :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
 
Additional information: La structure spécifiée doit être blittable ou avoir des informations de disposition.
De ce que j'ai compris, les variables blittable sont de type simple (bool, int, etc).

Et effectivement ma classe contient des objets de classe plus complexe. Donc elle n'est pas blittable ? Je fais comment alors ?

De plus pourquoi doit-on allouer de la m�moire pour r�cup�rer un pointeur sur un objet qui est d�j� allou� ?

Merci.

Flo.