Error del compilador C2990
Actualización: noviembre 2007
Mensaje de error
'clase': tipo de no clase ya se declarado como tipo de clase
'class' : non-class type as already been declared as a class type
La clase que no es de plantilla ni genérica vuelve a definir una clase de plantilla o genérica. Compruebe si hay conflictos en los archivos de encabezado.
El ejemplo siguiente genera el error C2990:
// C2990.cpp
// compile with: /c
template <class T>
class C{};
class C{}; // C2990
El error C2990 también puede producirse cuando se utilizan genéricos:
// C2990b.cpp
// compile with: /clr /c
generic <class T>
ref struct GC;
ref struct GC {}; // C2990
El error C2990 también puede producirse debido a un cambio importante en el compilador de Visual C++ para Visual C++ 2005; el compilador requiere ahora que varias declaraciones del mismo tipo sean idénticas en relación con la especificación de la plantilla. Para obtener más información, vea Cambios importantes en el compilador de Visual C++ 2005.
El ejemplo siguiente genera el error C2990:
// C2990c.cpp
// compile with: /c
template<class T>
class A;
template<class T>
struct A2 {
friend class A; // C2990
};
// OK
template<class T>
struct B {
template<class T>
friend class A;
};