2011-01-19 3 views
0

J'ai un pointeur vers une classe native et je veux l'envelopper temporairement dans un objet. Je suppose que la fonction System :: Reflection :: Pointer :: Box() serait le chemin à parcourir. Cependant, j'ai du mal à formater le second paramètre. Je reçois une erreur d'exécution qui indique que 'Type doit être un pointeur', comme je suppose qu'il devrait l'être. Mais je ne peux pas comprendre la syntaxe.Boxing Native C++ Pointer

+1

Ceci est C++/CLI, pas C++, n'est-ce pas? –

+0

oui. (hmm .. 15 caractères minimum pour un commentaire, qui l'aurait thunk). – Nicholas

Répondre

1

Je ne pouvais pas obtenir System.Reflection.Pointer.Box pour travailler, mais j'ai trouvé la capacité de faire ce que vous essayez avec humble IntPtr.

A * a = new A; 
Object ^o = gcnew IntPtr(a); // a is boxed in o 
IntPtr i = safe_cast<IntPtr>(o); // Unbox the IntPtr 
A * aIsBack = static_cast<A*>(i.ToPointer()); // Retrieve a 
+0

Merci. Pas aussi silencieux que Box(), mais rien de ce qu'une directive de pré-traitement ne peut réparer. – Nicholas