管理されていないコードを管理された.dllでラップしようとしてGeneric::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':この'ポインタを' const System :: Collections :: Generic::List'から'System:: Collections::に変換できませんGeneric :: List% '
...では、どのようにして参照/ポインタにアクセスしますか?