Бокс родной C ++ Pointer - PullRequest
       17

Бокс родной C ++ Pointer

0 голосов
/ 19 января 2011

У меня есть указатель на собственный класс и я хочу временно обернуть его в объект.Я предполагаю, что функция System :: Reflection :: Pointer :: Box () была бы подходящим вариантом.Однако у меня возникают проблемы с форматированием второго параметра.

class A {}
A * a;
Object ^ o = Box(a, A::typeid);

Я получаю ошибку во время выполнения, которая говорит: «Тип должен быть указателем», как я полагаю, должно быть.Но я не могу понять синтаксис.

1 Ответ

1 голос
/ 19 января 2011

Я тоже не мог заставить System.Reflection.Pointer.Box работать, но нашел возможность делать то, что вы пытаетесь, смиренно 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
...