Skip to content

Latest commit

 

History

History
57 lines (45 loc) · 1.16 KB

compiler-error-c2990.md

File metadata and controls

57 lines (45 loc) · 1.16 KB
description title ms.date f1_keywords helpviewer_keywords ms.assetid
Learn more about: Compiler Error C2990
Compiler Error C2990
11/04/2016
C2990
C2990
674e9f6a-6743-4af0-a7ed-cbe11103a2f8

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 Microsoft C++ compiler for Visual Studio 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;
};