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
Libérer: 2024-12-16 04:53:17
original
448 Les gens l'ont consulté

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)
Copier après la connexion

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);
}
Copier après la connexion

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);
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal