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

时间:2011-08-04 22:28:47

标签: map c++-cli native managed

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

使用std :: map给编译器警告C4368(不能将'member'定义为托管'type'的成员:不支持混合类型。)

使用Dictionary给出C3225:'TValue'的泛型类型参数不能是'本地指针',它必须是值类型或引用类型的句柄

如何实现此映射?

2 个答案:

答案 0 :(得分:6)

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

value struct TValue { native* ptr; };

Dictionary<String^, TValue> d;

答案 1 :(得分:3)

Dictionary<String^, IntPtr>是您最好的选择。遗憾的是,IntPtr在概念上等同于void*,因此您丢失了类型信息,并且每次要使用它时都必须将值强制转换为实际指针类型。