Compartir a través de


Error del compilador C2990

'clase': tipo de no clase ya se ha declarado como tipo de clase

Una clase no genérica o de plantilla redefine una clase genérica o de plantilla. 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 se puede producir también cuando se usan genéricos:

// C2990b.cpp
// compile with: /clr /c
generic <class T>
ref struct GC;

ref struct GC {};   // C2990

El error C2990 se puede producir también por un cambio importante en el compilador de Microsoft C++ para Visual Studio 2005. El compilador ahora requiere que varias declaraciones para el mismo tipo sean idénticas con respecto a la especificación de plantilla.

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;
};