Udostępnij za pośrednictwem


C3225 błąd kompilatora

argument typu rodzajowego 'arg' nie może być 'type', musi być typ wartości lub typ obsługi

Argument typu rodzajowego nie poprawnego typu.

Aby uzyskać więcej informacji, zobacz Typy ogólne (C++ Component Extensions).

Przykład

Nie można utworzyć wystąpienia typu rodzajowego z typem macierzystym.Poniższy przykład generuje 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
}

Poniższy przykład tworzy składnik przy użyciu języka C#.Należy zauważyć, że ograniczenie Określa, że typ rodzajowy można tylko można utworzyć wystąpienia typu wartości.

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

Próbka ta zużywa C#-utworzony składnik i naruszające ograniczenie, że MyList można tylko utworzyć wystąpienia typu wartości inne niż Nullable.Poniższy przykład generuje 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
}