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