web-dev-qa-db-fra.com

Comment appeler via un pointeur de fonction membre?

J'essaie de faire des tests avec le pointeur de fonction membre. Quel est le problème avec ce code? L'instruction bigCat.*pcat(); ne se compile pas.

class cat {
public:
   void walk() {
      printf("cat is walking \n");
   }
};

int main(){
   cat bigCat;
   void (cat::*pcat)();
   pcat = &cat::walk;
   bigCat.*pcat();
}
55
Nayana Adassuriya

Plus de parenthèses sont nécessaires:

(bigCat.*pcat)();
^            ^

L'appel de fonction (()) a une priorité plus élevée que l'opérateur de liaison pointeur-membre (.*). Les opérateurs unaires ont une priorité plus élevée que les opérateurs binaires.

91
James McNellis