Maison > développement back-end > C++ > Comment appeler un pointeur vers une fonction membre en C ?

Comment appeler un pointeur vers une fonction membre en C ?

Linda Hamilton
Libérer: 2024-12-05 15:45:10
original
250 Les gens l'ont consulté

How Do I Call a Pointer to a Member Function in C  ?

C Appel d'un pointeur vers une fonction membre

L'appel d'un pointeur vers une fonction membre en C nécessite une syntaxe spécifique. Voici l'anatomie de la syntaxe :

(*pointer_to_member_function)(object_pointer, arguments);
Copier après la connexion

Exemple 1 : Appel d'une fonction membre avec un pointeur

Considérez l'extrait de code :

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;
    (*h)(xPos, yPos, width, height);
}
Copier après la connexion

Ici, hitTestList est une liste de pointeurs vers des fonctions membres nommées HitTest. Pour appeler chaque fonction membre à l'aide de son pointeur, vous devez spécifier le pointeur this, qui fait référence à l'objet sur lequel la fonction est appelée. Dans ce cas, vous disposez d'un pointeur vers une boîte d'objet Box, que vous pouvez utiliser comme pointeur this :

(box->*h)(xPos, yPos, width, height);
Copier après la connexion

Exemple 2 : Ajout de fonctions membres à une liste

Considérez l'extrait de code :

std::list<HitTest> list;

for (std::list<Box*>::const_iterator i = boxList.begin(); i != boxList.end(); ++i)
{
    Box * box = *i;
    list.push_back(&box->HitTest);
}
Copier après la connexion

Ici, vous ajoutez des fonctions membres de la classe Box à la liste liste. Notez que vous prenez l'adresse de la fonction membre en utilisant &box->HitTest.

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