Как поместить pin_ptr в общий список? - PullRequest
1 голос
/ 15 февраля 2010

У меня есть управляемый метод C ++, который принимает в качестве параметра список String ^

метод должен заполнять неуправляемую структуру указателями на память в строке ^

извлечь WCHAR * достаточно просто с помощью PtrToStringChars

однако я не знаю количество pin_ptr для выделения во время разработки

Я бы хотел добавить закрепленный ptr в список, что-то похожее на приведенное ниже. Список >

делая это дает ошибка C3225: аргумент универсального типа для 'T' не может быть 'cli :: pin_ptr', это должен быть тип значения или дескриптор ссылки

есть ли способ сделать это? в управляемом C ++

1 Ответ

1 голос
/ 15 февраля 2010

Ну, у вас есть несколько проблем. Первый pin_ptr не является управляемым типом, поэтому вы не сможете поместить его в список. Вместо этого вы можете использовать вектор C ++, за исключением:

Указатели закрепления могут быть объявлены только как нестатические локальные переменные в стеке.

из http://msdn.microsoft.com/en-us/library/1dz8byfh%28VS.80%29.aspx.

Вместо этого вам, вероятно, придется использовать GCHandles с GCHandleType , закрепленного напрямую.

...