Bonjour,
(Visual Studio 2005)
J'ai une classe déclarée :
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 public ref class MyClass{ ... }
Mais à l'éxécution du StructureToPtr j'obtiens :
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;
De ce que j'ai compris, les variables blittable sont de type simple (bool, int, etc).
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.
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.
Partager