Как преобразовать IntPtr в собственный объект c++
У меня есть com dll, которую я использую в C++ / Cli, один из методов в этой com dll возвращает IntPtr Я хочу преобразовать это обратно в указатель native object. Как я могу это сделать ? пожалуйста, в поставить
3 ответов
IntPtr является интегральным типом, вам нужно сначала преобразовать его в тип указателя:
IntPtr somePtr;
...
Mumble* fooPtr = (Mumble*)(void*)somePtr;
или более читаемая версия:
Mumble* fooPtr = (Mumble*)somePtr.ToPointer();
вызов метода будет оптимизирован во время выполнения.
IntPtr
есть ToPointer
метод, который возвращает void*
. Вызовите этот метод, затем используйте reintepret_cast
чтобы привести этот указатель к правильному родному типу.
Я хотел бы изменить ответ Ганса Пассанта,IntPtr
напрямую возвращает указатель void .. который вы можете легко использовать в любом типе собственного указателя C++.
IntPtr somePtr;
Mumble* fooPtr = (Mumble*)somePtr.ToPointer();
здесь .ToPointer()
вернет указатель void, теперь вы можете использовать свой пользовательский тип указателя.