Heim >Backend-Entwicklung >C++ >Wie kann eine statische C-Klassenmitgliedsfunktion als C-Callback verwendet werden?
Verwenden einer statischen C-Klassenmitgliedsfunktion als C-Rückruffunktion
In C ist es möglich, eine Klassenmitgliedsfunktion als zu registrieren C-Rückruffunktion, aber nur, wenn die Memberfunktion als deklariert ist statisch.
Erklärung:
Nichtstatische Memberfunktionen haben einen impliziten ersten Parameter der Typklasse A*, der dem Zeiger this entspricht. Allerdings verfügen C-Callback-Funktionen normalerweise nicht über diesen ersten Parameter. Um eine Klassenmitgliedsfunktion als Rückruf zu registrieren, müssen wir den impliziten this-Zeiger entfernen.
Lösung:
Deklarieren Sie die Mitgliedsfunktion als statisch. Dies bedeutet, dass die Mitgliedsfunktion keinen Zugriff auf diesen Zeiger hat.
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; }
Alternative Ansätze:
In Fällen, in denen die Verwendung nicht möglich oder wünschenswert ist Eine statische Member-Funktion, alternative Ansätze umfassen:
Das obige ist der detaillierte Inhalt vonWie kann eine statische C-Klassenmitgliedsfunktion als C-Callback verwendet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!