Бокс Native C++ Pointer

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

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

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


person Nicholas    schedule 19.01.2011    source источник
comment
Это C++/CLI, а не C++, верно?   -  person Benjamin Lindley    schedule 19.01.2011
comment
да. (хм.. Минимум 15 символов для комментария, кто бы мог подумать).   -  person Nicholas    schedule 19.01.2011


Ответы (1)


Я тоже не смог заставить 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
person mcdave    schedule 19.01.2011
comment
Спасибо. Не так тихо, как Box(), но нет ничего, что не могла бы исправить директива предварительной обработки. - person Nicholas; 20.01.2011