Compartilhar via


Erro do compilador C3225

argumento de tipo genérico para 'arg' não pode ser 'type', deve ser um tipo de valor ou um tipo de identificador

O argumento de tipo genérico não era do tipo correto.

Para obter mais informações, consulte Genéricos.

Exemplos

Você não pode criar uma instância de um tipo genérico com um tipo nativo. O exemplo a seguir gera o erro 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
}

O exemplo a seguir cria um componente usando C#. Observe que a restrição especifica que o tipo genérico só pode ser instanciado com um tipo de valor.

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

Este exemplo consome o componente criado em C# e viola a restrição de que MyList só pode ser instanciado com um tipo de valor diferente de Nullable. O exemplo a seguir gera o erro 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
}