Compartilhar via


Erro do compilador C2276

'operator' : Operação ilegal na expressão de função membro associada

O compilador encontrou um problema com a sintaxe usada para criar um ponteiro para membro.

Comentários

O erro C2276 geralmente é causado quando você tenta criar um ponteiro para membro usando uma variável de instância para qualificar o membro, em vez de um tipo de classe. Você também poderá ver esse erro se estiver tentando chamar uma função de membro usando a sintaxe errada.

Exemplo

Este exemplo mostra várias maneiras pelas quais o C2276 pode ocorrer e como fazer a correção:

// C2276.cpp
class A {
public:
   int func(){return 0;}
} a;

int (*pf)() = &a.func;   // C2276
// pf isn't qualified by the class type, and it 
// tries to take a member address from an instance of A.
// Try the following line instead:
// int (A::*pf)() = &A::func;

class B : public A {
public:
   void mf() {
      auto x = &this -> func;   // C2276
      // try the following line instead
      // auto x = &B::func;
   }
};

int main() {
   A a3;
   auto pmf1 = &a3.func;   // C2276
   // try the following line instead
   // auto pmf1 = &A::func;
}