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