Condividi tramite


Errore del compilatore C2276

'operator': operazione non valida nell'espressione della funzione membro associata

Il compilatore ha rilevato un problema con la sintassi usata per creare un puntatore a membro.

Osservazioni:

L'errore C2276 è spesso causato quando si tenta di creare un puntatore a membro usando una variabile di istanza per qualificare il membro, anziché un tipo di classe. Questo errore può essere visualizzato anche se si sta tentando di chiamare una funzione membro usando la sintassi errata.

Esempio

Questo esempio mostra diversi modi in cui può verificarsi C2276 e come risolverli:

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