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

Comment appeler correctement des pointeurs vers des fonctions membres en C ?

Susan Sarandon
Libérer: 2024-12-31 13:20:11
original
580 Les gens l'ont consulté

How to Correctly Call Pointers to Member Functions in C  ?

Appel de pointeurs vers des fonctions membres en C

Les pointeurs vers des fonctions membres offrent un moyen pratique de stocker et d'exécuter des fonctions membres spécifiques tout en offrant une flexibilité dans la liaison dynamique. Cependant, l'appel de ces pointeurs de fonction a sa syntaxe unique.

Avec les fonctions membres non statiques, l'appel d'un pointeur de fonction nécessite de fournir à la fois des paramètres nommés et un pointeur this, qui représente l'objet sur lequel la fonction sera invoquée. Le code corrigé suivant montre la syntaxe correcte :

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

Ici, box est un pointeur vers l'objet Box qui fonctionnera comme le pointeur this. En utilisant box->*h, nous appelons essentiellement la fonction membre h sur l'instance Box spécifique pointée par box.

En ce qui concerne l'ajout de fonctions membres à la liste, le code corrigé serait :

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

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