Sdílet prostřednictvím


Chyba kompilátoru C3225

Obecný argument typu "arg" nemůže být "type", musí se jednat o typ hodnoty nebo typ popisovače.

Argument obecného typu nebyl správným typem.

Další informace najdete v tématu Obecné typy.

Příklady

Nelze vytvořit instanci obecného typu s nativním typem. Následující ukázka vygeneruje 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
}

Následující ukázka vytvoří komponentu pomocí jazyka C#. Všimněte si, že omezení určuje, že obecný typ lze vytvořit instanci pouze s typem hodnoty.

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

Tato ukázka využívá komponentu vytvořené v jazyce C#a porušuje omezení, které lze vytvořit pouze pomocí jiného typu hodnoty než NullablemyList. Následující ukázka vygeneruje 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
}