Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Menghantar Penunjuk Fungsi Ahli kepada Fungsi Luaran dalam C?

Bagaimana untuk Menghantar Penunjuk Fungsi Ahli kepada Fungsi Luaran dalam C?

Barbara Streisand
Lepaskan: 2024-11-29 06:25:14
asal
782 orang telah melayarinya

How to Pass Member Function Pointers to External Functions in C  ?

Melalukan Penunjuk Fungsi Ahli ke Fungsi Luaran

Melalukan penunjuk fungsi ahli sebagai argumen kepada fungsi luaran boleh menjadi rumit, terutamanya apabila berurusan dengan jenis kelas . Soalan ini memfokuskan pada senario tertentu di mana fungsi ahli kelas perlu dihantar kepada fungsi yang mengharapkan penuding fungsi ahli.

Untuk mencapai ini, fungsi luaran memerlukan kedua-dua penunjuk ke objek dan penunjuk kepada fungsi ahli. Dalam coretan kod yang diberikan, fungsi luaran MenuButton::SetButton() mengambil penuding ke objek sebagai ButtonObj dan penuding kepada fungsi ahli sebagai ButtonFunc.

Penyelesaian melibatkan menghantar kedua-dua penunjuk objek dan ahli penunjuk fungsi ke MenuButton::SetButton(). Dalam testMenu kelas yang disediakan, pembina memanggil x.SetButton(...) dan menghantar ini sebagai penunjuk objek dan test2 sebagai penunjuk fungsi ahli. Ini memastikan bahawa apabila fungsi luaran dipanggil, ia mempunyai akses kepada kedua-dua objek dan fungsi ahlinya.

Berikut ialah kod yang diubah suai:

testMenu::testMenu()
  :MenuScreen("testMenu")
{
  x.SetButton(100,100,TEXT("buttonNormal.png"), TEXT("buttonHover.png"),
        TEXT("buttonPressed.png"), 100, 40, this, &testMenu::test2);
  draw = false;
}
Salin selepas log masuk

Dalam fungsi luaran MenuButton::SetButton (), penunjuk objek dan penunjuk fungsi ahli boleh digunakan untuk memanggil fungsi ahli menggunakan sintaks ((ButtonObj)->*(ButtonFunc))();.

Atas ialah kandungan terperinci Bagaimana untuk Menghantar Penunjuk Fungsi Ahli kepada Fungsi Luaran dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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