0

私はC ++でのプログラミングにかなり慣れていません。私は何年にもわたっていくつかの C# を行ってきましたが、C# に習熟しているとは言えません。一部のコードをネイティブ C++ から C++/CX に変更しようとしていますが、特にベクトルに関連して、多くのコンパイラ エラーが発生し続けています。私はMSDN - Collections (C++/CX)を読んでいて、IVector を使用する必要があることを収集しました。

別のヘッダー ファイルで定義された構造体があります。

typedef struct myStruct{
 float p;
 double x;
 double y;
 uint id;
}

この構造体のベクトルをメソッド宣言のパラメーターとして使用しました。

void ProcessStruct (std::vector<myStruct> myStructs){}

それを IVector に変換するときは、次のようにします。

void ProcessStruct (Windows::Foundation::Collections::IVector<myStruct>^ myStructs){}

私は常にコンパイラエラーC3225を取得することになります:「「arg」のジェネリック型引数は「型」にすることはできません。値型またはハンドル型である必要があります。代わりにusing を使用してみIVector<myStruct^>^ましたが、結局 C3699: "operator' : cannot use this indirection on type 'type'" になります

したがって、私の唯一のオプションはジェネリックを作成することだと思いますが、ここでは、実際に何をすべきかについて非常に混乱しています。構造体をジェネリックに変換するにはどうすればよいですか? IVector ができない std::vector の機能は何ですか?

4

1 に答える 1