Partager via


Erreur du compilateur C2942

'class' : type-class-id redéfini comme argument formel d’une fonction

Vous ne pouvez pas utiliser une classe générique ou modèle comme argument formel. Vous ne pouvez pas passer un argument directement au constructeur d’une classe générique ou de modèle.

Cette erreur est obsolète dans Visual Studio 2022 et versions ultérieures.

L’exemple suivant génère l’erreur C2942 :

// C2942.cpp
// compile with: /c
template<class T>
struct TC {};
void f(int TC<int>) {}   // C2942

// OK
struct TC2 {};
void f(TC2 i) {}

L’erreur C2942 peut également se produire lors de l’utilisation de génériques :

// C2942b.cpp
// compile with: /clr /c
generic<class T>
ref struct GC {};
void f(int GC<int>) {}   // C2942
ref struct GC2 { };
void f(int GC2) {}