Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Memanggil Fungsi Ahli Menggunakan Penunjuk dalam C?

Bagaimana untuk Memanggil Fungsi Ahli Menggunakan Penunjuk dalam C?

Linda Hamilton
Lepaskan: 2024-12-24 04:32:13
asal
797 orang telah melayarinya

How to Correctly Call a Member Function Using a Pointer in C  ?

Memanggil Melalui Penunjuk Fungsi Ahli

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();
}
Salin selepas log masuk

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)();
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan