1

我有一个托管 C++ 方法,该方法将 String^ 列表作为参数

该方法需要使用指向字符串^中内存的指针填充非托管结构

使用 PtrToStringChars 提取 WCHAR* 非常简单

但是我不知道在设计时要分配的 pin_ptr 的数量

我想将固定的 ptr 添加到列表中,类似于下面的 List< pin_ptr< const wchar_t>>

这样做会产生错误 C3225:“T”的泛型类型参数不能是“cli::pin_ptr”,它必须是值类型或引用句柄

有没有办法做到这一点?在托管 C++ 中

4

1 回答 1

1

那么你有几个问题。第一个 pin_ptr 不是托管类型,因此您无法将其放入列表中。您可以改用 C++ 向量,但以下情况除外:

固定指针只能声明为堆栈上的非静态局部变量。

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

相反,您可能必须直接使用GCHandle和 Pinned 的GCHandleType

于 2010-02-15T03:17:49.377 回答