Compiler Error C2990
Visual Studio 2015
The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.
The latest version of this topic can be found at Compiler Error C2990.
class' : non-class type as already been declared as a class type
The non generic or template class redefines a generic or template class. Check header files for conflicts.
The following sample generates C2990:
// C2990.cpp
// compile with: /c
template <class T>
class C{};
class C{}; // C2990
C2990 can also occur when using generics:
// C2990b.cpp
// compile with: /clr /c
generic <class T>
ref struct GC;
ref struct GC {}; // C2990
C2990 can also occur due to a breaking change in the Visual C++ compiler for Visual C++ 2005; the compiler now requires that multiple declarations for the same type be identical with respect to template specification.
The following sample generates 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;
};
Show: