Native / CLI C ++:如何从vector <class1_native>转换为List <class1_cli> </class1_cli> </class1_native>

时间:2013-01-06 03:03:03

标签: c++ c++-cli mixed-mode

我正在用C ++编写Native / CLI DLL。我最终将从C#代码中调用DLL(我更熟悉它),但我正在尝试使用CLI包装器封装我的Native C ++类。

所以我的问题是,将std :: vector转换为List类的最佳方法是什么?

这些类大多是简单的,最复杂的看起来像这样:

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

说实话,我甚至无法将vector<wstring>变成List<String>

非常感谢任何帮助!

1 个答案:

答案 0 :(得分: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;
}