C Memanggil Penuding kepada Fungsi Ahli
Memanggil penuding kepada fungsi ahli dalam C memerlukan sintaks tertentu. Berikut ialah anatomi sintaks:
(*pointer_to_member_function)(object_pointer, arguments);
Contoh 1: Memanggil Fungsi Ahli dengan Penunjuk
Pertimbangkan coretan kod:
typedef void (Box::*HitTest) (int x, int y, int w, int h); for (std::list<HitTest>::const_iterator i = hitTestList.begin(); i != hitTestList.end(); ++i) { HitTest h = *i; (*h)(xPos, yPos, width, height); }
Di sini, hitTestList ialah senarai penunjuk kepada fungsi ahli bernama HitTest. Untuk memanggil setiap fungsi ahli menggunakan penunjuknya, anda perlu menentukan penunjuk ini, yang merujuk kepada objek yang dipanggil fungsi. Dalam kes ini, anda mempunyai penunjuk ke kotak objek Kotak, yang boleh anda gunakan sebagai penunjuk ini:
(box->*h)(xPos, yPos, width, height);
Contoh 2: Menambah Fungsi Ahli pada Senarai
Pertimbangkan coretan kod:
std::list<HitTest> list; for (std::list<Box*>::const_iterator i = boxList.begin(); i != boxList.end(); ++i) { Box * box = *i; list.push_back(&box->HitTest); }
Di sini, anda menambah fungsi ahli Kotak kelas ke senarai senarai. Ambil perhatian bahawa anda mengambil alamat fungsi ahli menggunakan &box->HitTest.
Atas ialah kandungan terperinci Bagaimana Saya Memanggil Penunjuk kepada Fungsi Ahli dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!