Подтвердить что ты не робот

Как вызвать указатель на функцию-член?

Я пытаюсь выполнить некоторое тестирование с указателем на функцию-член. Что не так с этим кодом? Оператор bigCat.*pcat(); не компилируется.

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

int main(){
   cat bigCat;
   void (cat::*pcat)();
   pcat = &cat::walk;
   bigCat.*pcat();
}
4b9b3361

Ответ 1

Требуется больше скобок:

(bigCat.*pcat)();
^            ^

Вызов функции (()) имеет более высокий приоритет, чем оператор привязки указателя к элементу (.*). Унарные операторы имеют более высокий приоритет, чем бинарные операторы.