次の方法で共有


コンパイラ エラー C3225

'arg' のジェネリック型引数を 'type' にすることはできません。値型またはハンドル型にしなければなりません

ジェネリック型引数が正しい型ではありません。

詳細については、「ジェネリック」を参照してください。

ネイティブ型を使用してジェネリック型をインスタンス化することはできません。 次の例では 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
}