本机/clic++;:如何从矢量转换<;class1_native>;列出<;class1_cli>; 我正在用C++编写一个本地/CLI DLL。我最终会从C代码中调用DLL(我更熟悉),但是我试图用CLI包装器来封装我的C++类。

本机/clic++;:如何从矢量转换<;class1_native>;列出<;class1_cli>; 我正在用C++编写一个本地/CLI DLL。我最终会从C代码中调用DLL(我更熟悉),但是我试图用CLI包装器来封装我的C++类。,c++,c++-cli,mixed-mode,C++,C++ Cli,Mixed Mode,所以我的问题是,对于我来说,将std::vector转换为List类的最佳方式是什么 这些类大部分都很简单,最复杂的是这样的: class SecurityPrincipal { public: wstring distinguishedName; SECURITYPRINCIPAL_NODE_TYPE NodeType; vector<LDAPAttribute> Attributes; vector<SecurityPrincipal>

所以我的问题是,对于我来说,将std::vector转换为List类的最佳方式是什么

这些类大部分都很简单,最复杂的是这样的:

class SecurityPrincipal
{
public:
    wstring distinguishedName;
    SECURITYPRINCIPAL_NODE_TYPE NodeType;
    vector<LDAPAttribute> Attributes;
    vector<SecurityPrincipal> Nodes;
}
class SecurityPrincipal
{
公众:
wstring区分名称;
安全原则节点类型节点类型;
向量属性;
向量节点;
}
老实说,我甚至无法将
向量
放入
列表


任何帮助都将不胜感激

>我不知道C++中包含的任何标准算法/函数,允许转换的级别。但是有没有什么原因导致
for
循环无法工作?下面是brain编译的

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;
}
typedef系统::集合::通用::列表MyList;
typedef std::vector MyVector;
MyList^本地托管(MyVector&v){
MyList^result=gcnew MyList();
如果(结果!=nullptr){
对于(MyVector::迭代器i=v.begin();i!=v.end();++i){
class1_native&nativeValue=*i;
结果.添加(gcnew class1_cli(nativeValue));
}
}
返回结果;
}

> > p>我不知道C++中包含的任何标准算法/函数,允许转换级别。但是有没有什么原因导致
for
循环无法工作?下面是brain编译的

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;
}
typedef系统::集合::通用::列表MyList;
typedef std::vector MyVector;
MyList^本地托管(MyVector&v){
MyList^result=gcnew MyList();
如果(结果!=nullptr){
对于(MyVector::迭代器i=v.begin();i!=v.end();++i){
class1_native&nativeValue=*i;
结果.添加(gcnew class1_cli(nativeValue));
}
}
返回结果;
}

我花了几个小时试图让它编译/运行,但没有成功。这行代码有问题:gcnew class1_cli(nativeValue)。你是说我应该加入一个构造函数来用本机数据初始化CLI类,还是说这里有什么我没有得到的?我尝试使用(SecurityPrincipal_CLI^)nativeValue进行转换,但也不起作用。我假设您的CLI类以某种方式包装了本机类型,不是吗?具体如何取决于您的实现。好的,很酷。我希望有一个更简单的方法,但我想没有。啊,好吧+1获取详细答案。我花了几个小时试图让它编译/运行,但没有成功。这行代码有问题:gcnew class1_cli(nativeValue)。你是说我应该加入一个构造函数来用本机数据初始化CLI类,还是说这里有什么我没有得到的?我尝试使用(SecurityPrincipal_CLI^)nativeValue进行转换,但也不起作用。我假设您的CLI类以某种方式包装了本机类型,不是吗?具体如何取决于您的实现。好的,很酷。我希望有一个更简单的方法,但我想没有。啊,好吧+1.详细答案。