在 c++/cli 中建立托管对象和本机指针之间的映射?
我有一个 c++/cli 类,我想在其中维护托管字符串和本机指针之间的映射。
使用 std::map 会向编译器发出警告 C4368(无法将“成员”定义为托管“类型”的成员:不支持混合类型)。
使用字典给出 C3225:“TValue”的泛型类型参数不能是“本机指针”,它必须是值类型或引用类型的句柄
如何实现此映射?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
只需创建一个保存本机指针的值类型,即
Just make a value type which holds the native pointer, i.e.
Dictionary
是您最好的选择。不幸的是,IntPtr
在概念上等同于void*
,因此您会丢失类型信息,并且每次要使用该值时都必须将其转换为真正的指针类型。Dictionary<String^, IntPtr>
is your best bet. Unfortunately,IntPtr
is conceptually equivalent tovoid*
, so you lose type information and will have to cast the value to the real pointer type every time you want to use it.