Condividi tramite


Errore del compilatore C2990

'class': tipo non di classe già dichiarato come tipo di classe

La classe non generica o modello ridefinisce una classe generica o modello. Controllare la presenza di conflitti nei file di intestazione.

L'esempio seguente genera l'errore C2990:

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

C2990 può verificarsi anche quando si usano generics:

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

ref struct GC {};   // C2990

C2990 può verificarsi anche a causa di una modifica di rilievo nel compilatore Microsoft C++ per Visual Studio 2005; Il compilatore richiede ora che più dichiarazioni per lo stesso tipo siano identiche rispetto alla specifica del modello.

L'esempio seguente genera l'errore 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;
};