Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Fungsi Ahli Kelas C Statik Boleh Digunakan sebagai Panggilan Balik C?

Bagaimanakah Fungsi Ahli Kelas C Statik Boleh Digunakan sebagai Panggilan Balik C?

Mary-Kate Olsen
Lepaskan: 2024-12-14 06:46:13
asal
209 orang telah melayarinya

How Can a Static C   Class Member Function Be Used as a C Callback?

Menggunakan Fungsi Ahli Kelas C Statik sebagai Fungsi Panggilan Balik C

Dalam C , adalah mungkin untuk mendaftarkan fungsi ahli kelas sebagai C fungsi panggil balik, tetapi hanya jika fungsi ahli diisytiharkan sebagai statik.

Penjelasan:

Fungsi ahli bukan statik mempunyai parameter pertama tersirat jenis kelas A* yang sepadan dengan penuding ini. Walau bagaimanapun, fungsi panggil balik C biasanya tidak mempunyai parameter pertama ini. Untuk mendaftarkan fungsi ahli kelas sebagai panggil balik, kita mesti menghapuskan penunjuk ini yang tersirat.

Penyelesaian:

Isytihar fungsi ahli sebagai statik. Ini bermakna fungsi ahli tidak akan mempunyai akses kepada penuding ini.

class A {
  public:
   A();
   ~A();
   static int e(int *k, int *j);
};

A::A()
{
   register_with_library(e)
}

int
A::e(int *k, int *e)
{
  return 0;
}
Salin selepas log masuk

Pendekatan Alternatif:

Dalam kes yang tidak mungkin atau wajar digunakan fungsi ahli statik, pendekatan alternatif termasuk:

  • Mencipta C biasa fungsi: Takrifkan fungsi C yang berfungsi sebagai proksi untuk fungsi ahli kelas, dan kemudian daftarkan fungsi C sebagai panggil balik.
  • Menggunakan penuding fungsi: Cipta fungsi penunjuk yang menunjuk kepada fungsi ahli kelas dan kemudian mendaftarkan penunjuk fungsi sebagai panggilan balik.
  • Menggunakan lambda ungkapan: C 11 memperkenalkan ungkapan lambda, yang menyediakan cara yang mudah untuk mentakrifkan fungsi tanpa nama. Anda boleh menggunakan ungkapan lambda untuk melaksanakan fungsi panggil balik.

Atas ialah kandungan terperinci Bagaimanakah Fungsi Ahli Kelas C Statik Boleh Digunakan sebagai Panggilan Balik 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