Erreur du compilateur C2276
'operator' : opération illégale sur l’expression de fonction membre liée
Le compilateur a détecté un problème avec la syntaxe utilisée pour créer un pointeur vers un membre.
Notes
L’erreur C2276
est souvent causée lorsque vous tentez de créer un pointeur vers un membre à l’aide d’une variable d’instance pour qualifier le membre, au lieu d’un type de classe. Vous pouvez également voir cette erreur si vous essayez d’appeler une fonction membre à l’aide de la syntaxe incorrecte.
Exemple
Cet exemple montre plusieurs façons dont L’erreur C2276 peut se produire et comment les corriger :
// 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;
}