如何将 pin_ptr 放入通用列表中?
我有一个托管 C++ 方法,它采用 String 列表作为参数^
该方法需要使用指向 String 中内存的指针填充非托管结构^
使用 PtrToStringChars 提取 WCHAR* 非常简单,
但是我不知道数量在设计时分配的 pin_ptr
我想将固定的 ptr 添加到列表中,其内容类似于下面的内容 列表< pin_ptr < const wchar_t>>
这样做会产生 错误 C3225:“T”的泛型类型参数不能是“cli::pin_ptr”,它必须是值类型或引用句柄
有没有办法做到这一点?在托管 C++ 中
I've got a managed C++ method that takes as a parameter a list of String^
the method needs to populate an unmanaged structure with pointers to the memory in the String^
extracting the WCHAR* is simple enough with PtrToStringChars
however I dont know the number of pin_ptr's to allocate at design time
I'd like to add the pinned ptr to a list, with something similar to the below
List< pin_ptr< const wchar_t>>
doing this yields
error C3225: generic type argument for 'T' cannot be 'cli::pin_ptr', it must be a value type or a handle to a reference
is there a way to do this? in managed C++
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
好吧,你有一些问题。首先 pin_ptr 不是托管类型,因此您无法将其放入列表中。您可以使用 C++ 向量代替,但以下情况除外:
来自 http://msdn.microsoft.com/en -us/library/1dz8byfh%28VS.80%29.aspx。
相反,您可能必须使用 GCHandles 直接使用 GCHandleType 固定。
Well you have a few problems. First pin_ptr isn't a managed type, so you wouldn't be able to put it in a List. You could use a C++ vector instead except:
from http://msdn.microsoft.com/en-us/library/1dz8byfh%28VS.80%29.aspx.
Instead you'll likely have to use GCHandles with a GCHandleType of Pinned directly.