Compilerfehler C3225

Das generische Typargument für 'Argument' kann nicht 'Typ' sein, es muss ein Werttyp oder ein Handletyp sein

Das generische Typargument war nicht vom richtigen Typ.

Weitere Informationen finden Sie unter Generika (Visual C++).

Beispiel

Sie können keinen generischen Typ mit einem systemeigenen Typ instanziieren.Im folgenden Beispiel wird C3225 generiert.

// 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
}

Im folgenden Beispiel wird eine Komponente mithilfe von C# erstellt.Die Einschränkung gibt an, dass der generische Typ nur mit einem Werttyp instanziiert werden kann.

// C3225_b.cs
// compile with: /target:library
// a C# program
public class MyList<T> where T: struct {}

In diesem Beispiel wird die mit C# erstellte Komponente verwendet. Die Einschränkung, dass MyList nur mit einem Werttyp außer Nullable verwendet werden kann, wird verletzt.Im folgenden Beispiel wird C3225 generiert.

// 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
}