コンパイラ エラー C3225
'arg' のジェネリック型引数を '型' にすることはできません。値型またはハンドル型にしなければなりません
ジェネリック型引数が正しい型ではありませんでした。
詳細については、「ジェネリック (C++ コンポーネント拡張)」を参照してください。
使用例
ジェネリック型をネイティブ型でインスタンス化することはできません。次の例では C3225 エラーが生成されます。
// C3225.cpp
// compile with: /clr
class A {};
ref class B {};
generic <class T>
ref class C {};
int main() {
C<A>^ c = gcnew C<A>; // C3225
C<B^>^ c2 = gcnew C<B^>; // OK
}
C# を使用してコンポーネントを作成する例を次に示します。制約で、ジェネリック型は値型でのみインスタンス化できることが指定されています。
// C3225_b.cs
// compile with: /target:library
// a C# program
public class MyList<T> where T: struct {}
この例では、C# で作成したコンポーネントを使用しているので、MyList は Nullable 以外の値型でのみインスタンス化できるという制約に違反します。次の例では C3225 エラーが生成されます。
// C3225_c.cpp
// compile with: /clr
#using "C3225_b.dll"
ref class A {};
value class B {};
int main() {
MyList<A> x; // C3225
MyList<B> y; // OK
}