C API の C++ CLI ラッパーに取り組んでいます。C API には、4 つの unsigned short の配列と 4 つの int の配列を含む構造があります。そのため、ラッパー関数を呼び出すときに使用する C# コード用の同様のクラスを作成しました。
// C Structure
typedef struct c_Struct_
{
unsigned short uShorts[4];
int ints[4];
} c_Struct;
// C++ CLI Class
public ref class CliClass
{
public:
property array<unsigned short>^ UnsignedShorts
{
array<unsigned short>^ get()
{
return _unsignedShorts;
}
}
property array<int>^ Ints
{
array<int>^ get()
{
return _ints;
}
}
CliClass(array<unsigned short>^ us, array<int> i)
{
_unsignedShorts = us;
_ints = i;
}
private:
array<unsigned short>^ _unsignedShorts;
array<int>^ _ints;
}
ここで私の質問に移ります。CLI クラスに内部メソッドを追加して、構造体を作成しました。
internal:
c_Struct ToStruct()
{
c_Struct results;
results.uShorts[0] = UnsignedShorts[0];
results.uShorts[1] = UnsignedShorts[1];
results.uShorts[2] = UnsignedShorts[2];
results.uShorts[3] = UnsignedShorts[3];
results.ints[0] = Ints[0];
results.ints[1] = Ints[1];
results.ints[2] = Ints[2];
results.ints[3] = Ints[3];
return results;
}
しかし、エラーが発生します: IntelliSense: タイプ "System::Object ^" の値は、割り当てごとにタイプ "unsigned short" のエンティティに割り当てることはできません。これの適切な構文は何ですか?