Compartir a través de


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
};