Error del compilador C2931
“class”: el identificador de clase de tipo redefinido como una función miembro de “identifier”
No puede usar una clase genérica o de plantilla como una función miembro de otra clase.
Este error está obsoleto en Visual Studio 2022 y versiones posteriores.
Este error puede producirse si las llaves no coinciden como es debido.
El ejemplo siguiente genera la advertencia C2931:
// C2931.cpp
// compile with: /c
template<class T>
struct TC { };
struct MyStruct {
void TC<int>(); // C2931
};
struct TC2 { };
struct MyStruct2 {
void TC2();
};
También se puede producir C2931 al usar genéricos:
// C2931b.cpp
// compile with: /clr /c
generic<class T> ref struct GC {};
struct MyStruct {
void GC<int>(); // C2931
void GC2(); // OK
};