为了将一些非托管代码包装在托管 .dll 中,我试图将 aGeneric::List
数据点转换为std::vector
. 这是我正在尝试做的一个片段:
namespace ManagedDLL
{
public ref class CppClass
{
void ListToStdVec( const List<double>& input_list, std::vector<double>& output_vector )
{
// Copy the contents of the input list into the vector
// ...
}
void ProcessData( List<double> sampleData )
{
std::vector<double> myVec;
ListToStdVec( sampleData, myVec );
// Now call the unmanaged code with the new vector
// ...
}
}
}
编译这个给了我:
错误 C3699:“&”:不能在类型“const System::Collections::Generic::List”上使用此间接
我可能在这里错过了一些基本的东西(我对 .net 的做事方式相对较新),但这对我来说似乎是合理有效的代码..?
[编辑]我已经尝试了 Andy 和 Dario 的建议并且它们有效,但是我如何访问输入列表的成员?我尝试了各种引用组合,但似乎没有任何编译:
void ListToStdVec( const List<double>% input_list, std::vector<double>& output_vector )
{
int num_of_elements = input_list->Count;
}
void ListToStdVec( const List<double>^ input_list, std::vector<double>& output_vector )
{
int num_of_elements = input_list.Count;
}
...都给我:
错误 C2662:“System::Collections::Generic::List::Count::get”:无法将“this”指针从“const System::Collections::Generic::List”转换为“System::Collections::通用::列表 %'
...那么您如何访问引用/指针?