我有一个c ++ / cli类,我想在其中维护托管字符串和本机指针之间的映射。
使用std :: map给编译器警告C4368(不能将'member'定义为托管'type'的成员:不支持混合类型。)
使用Dictionary给出C3225:'TValue'的泛型类型参数不能是'本地指针',它必须是值类型或引用类型的句柄
如何实现此映射?
答案 0 :(得分:6)
只需创建一个包含本机指针的值类型,即
value struct TValue { native* ptr; };
Dictionary<String^, TValue> d;
答案 1 :(得分:3)
Dictionary<String^, IntPtr>
是您最好的选择。遗憾的是,IntPtr
在概念上等同于void*
,因此您丢失了类型信息,并且每次要使用它时都必须将值强制转换为实际指针类型。