2

C++ でネイティブ/CLI DLL を作成しています。私は最終的に C# コードから DLL を呼び出しますが (私は C# コードの方がはるかによく知っています)、ネイティブ C++ クラスを CLI ラッパーでラップしようとしています。

私の質問は、 std::vector を List クラスに変換する最良の方法は何ですか?

クラスはほとんど単純ですが、最も複雑なものは次のようになります。

class SecurityPrincipal
{
public:
    wstring distinguishedName;
    SECURITYPRINCIPAL_NODE_TYPE NodeType;
    vector<LDAPAttribute> Attributes;
    vector<SecurityPrincipal> Nodes;
}

正直なところ、私は を に入れることさえできていませvector<wstring>List<String>

どんな助けでも大歓迎です!

4

1 に答える 1

4

そのレベルの変換を可能にする C++ に含まれる標準のアルゴリズム/関数については知りません。forしかし、ループが機能しない理由はありますか? 以下は脳内編集です。

typedef System::Collections::Generic::List<class1_cli> MyList;
typedef std::vector<class1_native> MyVector;

MyList^ NativeToManaged(MyVector& v) {
    MyList^ result = gcnew MyList();
    if (result != nullptr) {
        for (MyVector::iterator i = v.begin(); i != v.end(); ++i) {
            class1_native& nativeValue = *i;
            result.Add(gcnew class1_cli(nativeValue));
        }
    }
    return result;
}
于 2013-01-06T03:21:23.167 に答える