Compilerfehler C3390

Aktualisiert: November 2007

Fehlermeldung

'type_arg': Ungültiges Typargument für den generischen Parameter 'param' von 'generic_type' (generisch). Muss ein Referenztyp sein
'type_arg' : invalid type argument for generic parameter 'param' of generic 'generic_type', must be a reference type

Ein generischer Typ wurde falsch instanziiert. Überprüfen Sie die Typdefinition. Weitere Informationen finden Sie unter Generics (Visual C++).

Beispiel

Im folgenden Beispiel wird in C# eine Komponente erstellt, die einen generischen Typ enthält. Bestimmte Beschränkungen werden nicht unterstützt, wenn generische Typen in Visual C++ 2005 erstellt werden. Weitere Informationen finden Sie unter Einschränkungen für Typparameter (C#-Programmierhandbuch).

// C3390.cs
// compile with: /target:library
// a C# program
public class GR<C, V, N>
where C : class
where V : struct
where N : new() {}

Im folgenden Beispiel wird C3390 generiert.

// C3390_b.cpp
// compile with: /clr
#using <C3390.dll>
ref class R { R(int) {} };
value class V {};
ref struct N { N() {} };

int main () {
   GR<V, V, N^>^ gr2;   // C3390 first type must be a ref type
   GR<R^, V, N^>^ gr2b;   // OK
}