Partager via


Erreur du compilateur C2990

Mise à jour : novembre 2007

Message d'erreur

'classe' : le type sans classe a déjà été déclaré comme type de classe
'class' : non-class type as already been declared as a class type

La classe non générique ou de modèle redéfinit une classe générique ou de modèle. Recherchez la présence d'un conflit dans les fichiers d'en-tête.

L'exemple suivant génère l'erreur C2990 :

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

L'erreur C2990 peut également se produire lors de l'utilisation de génériques :

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

ref struct GC {};   // C2990

L'erreur C2990 peut également se produire en raison d'une modification avec rupture dans le compilateur Visual C++ pour Visual C++ 2005 ; ce dernier exige désormais que plusieurs déclarations d'un même type soient identiques en termes de spécification de modèle. Pour plus d'informations, consultez Modifications avec rupture dans le compilateur Visual C++ 2005.

L'exemple suivant génère l'erreur 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;
};