1

我想将我的哈希图添加到 vc++ 08 中的 ArrayList 中。我的代码如下。

    typedef std::tr1::unordered_map< std::wstring, std::wstring > hashmap;    
          hashmap numbers;
        ArrayList^ myAL = gcnew ArrayList;

myAL->Add(numbers); // gives error...

但它给出的错误是

error C2664: 'System::Collections::ArrayList::Add' : cannot convert parameter 1 from 'hashmap' to 'System::Object ^'
1>        No user-defined-conversion operator available, or
1>        No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called

我尝试使用对象进行投射,但没有成功。任何人都可以帮我在 arraylist 中添加 hashmap吗?

提前致谢...

4

1 回答 1

0

您在上面尝试的操作不起作用,因为托管类型和本机类型不会以这种方式直接互操作。

我建议 Kenny Kerr 的经典 C++/CLI 文章Best Practices for Writing Efficient and Reliable Code with C++/CLI来更详细地找出您的特定互操作场景,但我认为您想要做的是将指向您的本机对象的指针嵌入一个托管对象,您可以将其添加到列表结构中。如果您使用 Mr. Kerr 的AutoPtr 类(在上面的文章中描述并在此处更新),您应该能够创建一个包含 AutoPtr 作为成员的托管类,您可以将其添加到您的 ArrayList。

于 2012-04-10T21:24:41.833 回答