Freigeben über


Compilerfehler C2990

Aktualisiert: November 2007

Fehlermeldung

'Klasse': Nicht-Klassentyp wurde bereits als Klassentyp deklariert
'class' : non-class type as already been declared as a class type

In einer Klasse, die nicht generisch und keine Vorlagenklasse ist, wird eine generische oder Vorlagenklasse neu definiert. Prüfen Sie die Headerdateien auf Konflikte.

Im folgenden Beispiel wird C2990 generiert:

// C2990.cpp
// compile with: /c
template <class T>
class C{};
class C{};   // C2990

C2990 kann auch auftreten, wenn Generika verwendet werden:

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

ref struct GC {};   // C2990

C2990 kann auch aufgrund einer wichtigen Änderung bei Visual C++ 2005 im Visual C++-Compiler auftreten. Für den Compiler ist dann erforderlich, dass mehrere Deklarationen desselben Typs unter Beachtung der Vorlagenspezifikation identisch sind. Weitere Informationen finden Sie unter Wichtige Änderungen im Visual C++ 2005-Compiler.

Im folgenden Beispiel wird C2990 generiert:

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