Utilisation d'une fonction membre de classe C statique comme fonction de rappel C
En C, il est possible d'enregistrer une fonction membre de classe en tant que fonction de rappel C. Fonction de rappel C, mais seulement si la fonction membre est déclarée comme static.
Explication :
Les fonctions membres non statiques ont un premier paramètre implicite de classe de type A* correspondant au pointeur this. Cependant, les fonctions de rappel C n'ont généralement pas ce premier paramètre. Pour enregistrer une fonction membre de classe en tant que rappel, nous devons éliminer le pointeur this implicite.
Solution :
Déclarer la fonction membre comme statique. Cela signifie que la fonction membre n'aura pas accès au pointeur this.
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; }
Approches alternatives :
Dans les cas où il n'est pas possible ou souhaitable d'utiliser une fonction membre statique, les approches alternatives incluent :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!