Error del compilador C3225
Actualización: noviembre 2007
Mensaje de error
el argumento de tipo genérico para 'arg' no puede ser 'tipo', debe ser un tipo de valor o un tipo de identificador
generic type argument for 'arg' cannot be 'type', it must be a value type or handle type
El argumento de tipo genérico no es del tipo correcto.
Para obtener más información, vea Generics (Visual C++).
Ejemplo
No puede crear instancias de un tipo genérico con un tipo nativo. El ejemplo siguiente genera el error 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
}
El siguiente ejemplo crea un componente utilizando C#. Observe que la restricción especifica que sólo se pueden crear instancias del tipo genérico con un tipo de valor.
// C3225_b.cs
// compile with: /target:library
// a C# program
public class MyList<T> where T: struct {}
Este ejemplo utiliza el componente creado en C# e infringe la restricción de que sólo se pueden crear instancias de MyList con un tipo de valor distinto de Nullable. El ejemplo siguiente genera el error 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
}