hace unas semanas un compañero de trabajo pasó aproximadamente dos horas descubriendo por qué esta pieza de código C++/CLI no se compilará con Visual Studio 2008 (acabo de probarlo con Visual Studio 2010 ... misma historia).La restricción de clase de valor de C++/CLI no se compilará. ¿Por qué?
public ref class Test
{
generic<class T> where T : value class
void MyMethod(Nullable<T> nullable)
{
}
};
El compilador dice: Error
1 error C3214: 'T': tipo no válido argumento para el parámetro genérico 'T' de genérico 'Sistema :: anulable', no lo hace se reúnen restricción 'Sistema :: valueType ^' C: \ Users \ Simon \ Desktop \ Projektdokumentation \ GridLayoutPanel \ genéricos \ Generics.cpp 11 1 genéricos
Adición ValueType
hará que el código se compile.
public ref class Test
{
generic<class T> where T : value class, ValueType
void MyMethod(Nullable<T> nullable)
{
}
};
Mi pregunta es ahora. ¿Por qué? ¿Cuál es la diferencia entre value class
y ValueType
?
P.S: Véase la definición anulable para C++: http://msdn.microsoft.com/de-de/library/b3h38hb0.aspx
Estoy de acuerdo, la restricción de clase de valor debería haber sido suficiente. Creo que tu solución es correcta. Puede probar connect.microsoft.com para ver qué dicen. –