Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Mendapat Penunjuk Fungsi Ahli dengan betul dalam C?

Bagaimana untuk Mendapat Penunjuk Fungsi Ahli dengan betul dalam C?

Susan Sarandon
Lepaskan: 2024-12-31 21:53:10
asal
456 orang telah melayarinya

How to Correctly Invoke a Member Function Pointer in C  ?

Seruan Penunjuk Fungsi Ahli: Membedah Sintaks yang Betul

Apabila bekerja dengan penunjuk fungsi ahli, adalah penting untuk mematuhi sintaks yang betul untuk memastikan pelaksanaan yang berjaya. Mari kita teliti isu biasa yang dihadapi apabila cuba memanggil fungsi ahli melalui penuding fungsi ahli dan berikan penyelesaian yang diperlukan.

Coretan kod yang salah:

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

Ralat kompilasi: The bigCat .*pcat(); pernyataan menjana ralat.

Penyelesaian:

Kunci untuk menyelesaikan isu ini terletak pada memastikan ungkapan bigCat.*pcat() mempunyai keutamaan yang sesuai. Keutamaan pengendali menentukan bahawa pengendali unari diutamakan berbanding pengendali binari. Oleh itu, kurungan diperlukan untuk mengutamakan panggilan fungsi () berbanding operasi mengikat penunjuk kepada ahli .*.

(bigCat.*pcat)();
^            ^
Salin selepas log masuk

Melampirkan panggilan fungsi dalam kurungan memastikan pelaksanaannya terlebih dahulu, diikuti dengan penunjuk fungsi ahli mengikat.

Ingat:

  • Panggilan fungsi mempunyai keutamaan yang lebih tinggi daripada pengikatan penunjuk fungsi ahli.
  • Pengendali unari diutamakan daripada pengendali binari.
  • Kurungan boleh digunakan untuk mengawal keutamaan operator dan memastikan betul perintah pelaksanaan.

Atas ialah kandungan terperinci Bagaimana untuk Mendapat Penunjuk Fungsi Ahli dengan betul 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