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 にハッシュマップを追加するのを手伝ってくれる人はいますか?

前もって感謝します...

4

1 に答える 1

0

マネージド型とネイティブ型はそのように直接相互運用できないため、上で試みている操作は機能しません。

Kenny Kerr の古典的な C++/CLI の記事Best Practices for Writing Efficient and Reliable Code with C++/CLIで特定の相互運用シナリオをより詳細に把握することをお勧めしますが、あなたがやりたいことは、ネイティブ オブジェクトへのポインターをリスト構造に追加できる管理オブジェクト。Kerr 氏のAutoPtr クラス(上記の記事で説明され、ここで更新) を使用すると、AutoPtr をメンバーとして含むマネージド クラスを作成できるはずです。これを ArrayList に追加できます。

于 2012-04-10T21:24:41.833 に答える