webentwicklung-frage-antwort-db.com.de

Wie rufe ich einen Member-Funktionszeiger auf?

Ich versuche, einige Tests mit Elementfunktionszeiger durchzuführen. Was ist los mit diesem Code? Die Anweisung bigCat.*pcat(); wird nicht kompiliert.

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

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

Weitere Klammern sind erforderlich:

(bigCat.*pcat)();
^            ^

Der Funktionsaufruf (()) hat eine höhere Priorität als der Bindungsoperator Zeiger auf Element (.*). Die unären Operatoren haben eine höhere Priorität als die binären Operatoren.

91
James McNellis