Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Menghantar Penunjuk Fungsi Ahli kepada Fungsi Luaran dalam 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; }
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!