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
321 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!

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