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

Bagaimana untuk Memanggil Penunjuk ke Fungsi Ahli dalam C dengan betul?

Susan Sarandon
Susan Sarandonasal
2024-12-31 13:20:11567semak imbas

How to Correctly Call Pointers to Member Functions in C  ?

Memanggil Penunjuk kepada Fungsi Ahli dalam C

Penunjuk kepada fungsi ahli menyediakan cara yang mudah untuk menyimpan dan melaksanakan fungsi ahli tertentu sambil menawarkan fleksibiliti dalam pengikatan dinamik. Walau bagaimanapun, memanggil penuding fungsi ini mempunyai sintaksnya yang unik.

Dengan fungsi ahli bukan statik, memanggil penuding fungsi memerlukan kedua-dua parameter bernama dan penuding ini, yang mewakili objek yang fungsi akan dipanggil. Kod yang diperbetulkan berikut menunjukkan sintaks yang betul:

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;
    (box->*h)(xPos, yPos, width, height);
}

Di sini, kotak ialah penunjuk kepada objek Kotak yang akan berfungsi sebagai penuding ini. Dengan menggunakan box->*h, kami pada asasnya memanggil fungsi ahli h pada contoh Kotak tertentu yang ditunjuk oleh kotak.

Mengenai penambahan fungsi ahli pada senarai, kod yang diperbetulkan ialah:

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);
}

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

Kenyataan:
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