Maison >développement back-end >C++ >Comment appeler des pointeurs vers des fonctions membres en C ?

Comment appeler des pointeurs vers des fonctions membres en C ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-16 04:53:17503parcourir

How Do I Call Pointers to Member Functions in C  ?

Appel d'un pointeur vers des fonctions membres en C

En C, les pointeurs vers des fonctions membres constituent un moyen pratique d'invoquer dynamiquement des méthodes sur des objets. Cependant, leur syntaxe peut être difficile.

Syntaxe d'appel de pointeurs vers des fonctions membres

Pour appeler un pointeur vers une fonction membre, la syntaxe suivante est utilisée :

(object->*pointer_variable)(params)

où :

  • object est l'instance sur laquelle la fonction est en cours appelé
  • *pointer_variable est le pointeur vers la fonction membre
  • params sont les paramètres passés à la fonction

Exemple de syntaxe

Considérez l'extrait de code suivant :

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

Dans ce Par exemple, une liste de pointeurs vers les fonctions membres HitTest est itérée. Chaque pointeur est extrait de la liste et invoqué en fournissant le pointeur de boîte comme ceci.

Ajout de fonctions membres à une liste de pointeurs

Pour ajouter des fonctions membres à une liste de pointeurs, la syntaxe suivante peut être utilisée :

list.push_back(&box->HitTest);

Ce code pousse le pointeur vers la fonction membre HitTest de l'objet box dans la liste.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn