Rumah > pembangunan bahagian belakang > C++ > Bagaimana Saya Memanggil Penunjuk kepada Fungsi Ahli dalam C?

Bagaimana Saya Memanggil Penunjuk kepada Fungsi Ahli dalam C?

Linda Hamilton
Lepaskan: 2024-12-05 15:45:10
asal
252 orang telah melayarinya

How Do I Call a Pointer to a Member Function in C  ?

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

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

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

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

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!

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