Kompilatorfel C2942

"class" : type-class-id omdefinierat som ett formellt argument för en funktion

Anmärkningar

Du kan inte använda en allmän klass eller mallklass som ett formellt argument. Du kan inte skicka ett argument direkt till konstruktorn för en generisk klass eller mallklass.

Det här felet är föråldrat i Visual Studio 2022 och senare versioner.

Examples

I följande exempel genereras C2942:

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

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

C2942 kan också inträffa när du använder generiska läkemedel:

// 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) {}