Compartilhar via


Erro do compilador C2931

'class' : type-class-id redefinido como função membro de 'identifier'

Você não pode usar uma classe genérica ou de modelo como uma função membro de outra classe.

Esse erro ficou obsoleto no Visual Studio 2022 e em versões posteriores.

Esse erro pode ser causado se as chaves forem correspondidas incorretamente.

O seguinte exemplo gera o erro C2931:

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

struct TC2 { };
struct MyStruct2 {
   void TC2();
};

O erro C2931 também pode ocorrer ao usar genéricos:

// C2931b.cpp
// compile with: /clr /c
generic<class T> ref struct GC {};
struct MyStruct {
   void GC<int>();   // C2931
   void GC2();   // OK
};