Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mencipta Panggilan Balik Generik C untuk Berbilang Kelas?

Bagaimana untuk Mencipta Panggilan Balik Generik C untuk Berbilang Kelas?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-10 06:31:13884semak imbas

How to Create Generic C   Callbacks for Multiple Classes?

Panggil Balik C Menggunakan Ahli Kelas untuk Berbilang Kelas

Masalah:

Dalam C , bagaimana bolehkah anda mencipta fungsi panggil balik generik yang berfungsi dengan berbilang kelas, setiap satu dengan ahli panggil balik sendiri fungsi?

Penyelesaian:

Pada asalnya, kaedah panggil balik statik dan penuding kepada contoh telah digunakan, tetapi pendekatan ini boleh dipertingkatkan. Berikut ialah dua penyelesaian alternatif:

Menggunakan C 11 std::function dan std::bind:

  1. Tentukan pengendali acara yang mengambil std:: berfungsi sebagai hujah:
void addHandler(std::function<void(int)> callback);
  1. Ikat fungsi panggil balik ke contoh menggunakan std::bind:
std::bind(&amp;MyClass::Callback, this, _1)

Menggunakan Fungsi C 11 Lambda:

Dengan fungsi lambda, anda boleh memudahkan lagi kod:

handler->addHandler([](int x) { std::cout << "x is " << x << '\n'; });

Atas ialah kandungan terperinci Bagaimana untuk Mencipta Panggilan Balik Generik C untuk Berbilang Kelas?. 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