Map 在c+;中的托管对象和本机指针之间建立映射+/cli?

Map 在c+;中的托管对象和本机指针之间建立映射+/cli?,map,c++-cli,native,managed,Map,C++ Cli,Native,Managed,我有一个c++/cli类,我想在其中维护托管字符串和本机指针之间的映射 使用std::map会向编译器发出警告C4368(无法将“成员”定义为托管“类型”的成员:不支持混合类型) 使用字典给出C3225:“TValue”的泛型类型参数不能是“本机指针”,它必须是值类型或引用类型的句柄 如何实现此映射?字典是您的最佳选择。不幸的是,IntPtr在概念上等同于void*,因此您会丢失类型信息,每次使用时都必须将值转换为实际指针类型。只需创建一个保存本机指针的值类型,即 value struct TV

我有一个c++/cli类,我想在其中维护托管字符串和本机指针之间的映射

使用std::map会向编译器发出警告C4368(无法将“成员”定义为托管“类型”的成员:不支持混合类型)

使用字典给出C3225:“TValue”的泛型类型参数不能是“本机指针”,它必须是值类型或引用类型的句柄


如何实现此映射?

字典是您的最佳选择。不幸的是,
IntPtr
在概念上等同于
void*
,因此您会丢失类型信息,每次使用时都必须将值转换为实际指针类型。

只需创建一个保存本机指针的值类型,即

value struct TValue { native* ptr; };

Dictionary<String^, TValue> d;
value结构TValue{native*ptr;};
词典d;