Dalam C, penunjuk fungsi ahli membolehkan kami merawat fungsi ahli seperti fungsi biasa melalui penunjuk. Walau bagaimanapun, peraturan sintaks tertentu mesti dipatuhi untuk mengelakkan ralat kompilasi.
Pertimbangkan kod berikut, di mana kami cuba memanggil fungsi ahli berjalan kelas kucing menggunakan penuding fungsi ahli:
class cat { public: void walk() { printf("cat is walking \n"); } }; int main(){ cat bigCat; void (cat::*pcat)(); pcat = &cat::walk; bigCat.*pcat(); }
Kod di atas gagal dikompilasi dengan ralat "bigCat.*pcat(); pernyataan tidak dikompil." Ini berlaku kerana terdapat isu keutamaan dengan sintaks.
Penunjuk fungsi ahli menggunakan operator ".", manakala panggilan fungsi menggunakan kurungan biasa. Keutamaan panggilan fungsi adalah lebih tinggi daripada panggilan "." operator.
Untuk membetulkan isu ini, kurungan tambahan diperlukan untuk mengatasi peraturan keutamaan:
(bigCat.*pcat)();
Dengan pembetulan ini, kod kini akan memanggil fungsi berjalan dengan betul melalui penuding fungsi ahli .
Atas ialah kandungan terperinci Bagaimana untuk Memanggil Fungsi Ahli Menggunakan Penunjuk dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!