Pertanyaan Bagaimana cara memanggil penunjuk fungsi anggota?


Saya mencoba melakukan beberapa pengujian dengan fungsi pointer anggota. Apa yang salah dengan kode ini? Itu bigCat.*pcat(); pernyataan tidak dapat dikompilasi.

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

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

50
2017-08-30 02:25


asal


Jawaban:


Lebih banyak tanda kurung diperlukan:

(bigCat.*pcat)();
^            ^

Panggilan fungsi (()) memiliki prioritas yang lebih tinggi daripada operator pengikat pointer-ke-member (.*). Operator unary memiliki prioritas yang lebih tinggi daripada operator biner.


80
2017-08-30 02:26