Maison >développement back-end >C++ >Comment appeler et ajouter correctement des pointeurs C aux fonctions membres ?

Comment appeler et ajouter correctement des pointeurs C aux fonctions membres ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-07 14:33:12515parcourir

How to Correctly Call and Add C   Pointers to Member Functions?

Appel d'un pointeur C vers des fonctions membres

Comprendre la syntaxe appropriée pour appeler des pointeurs vers des fonctions membres en C est crucial. Cette question explore la méthode spécifique pour appeler de tels pointeurs, ainsi que le processus d'ajout de fonctions membres à une liste.

Appel de pointeurs vers des fonctions membres

La question présente un extrait de code tentant d'invoquer des pointeurs vers des fonctions membres en utilisant la syntaxe :

(*h)(xPos, yPos, width, height);

Cependant, la syntaxe correcte nécessite de fournir à la fois les paramètres nommés et le pointeur this. Par conséquent, la ligne corrigée devient :

(box->*h)(xPos, yPos, width, height);

Cela garantit que le bon pointeur this est utilisé lors de l'appel de la fonction membre.

Ajout de fonctions membres à une liste

La question montre également comment ajouter des fonctions membres à une liste. Ici, les pointeurs vers les fonctions membres sont stockés dans une std :: list. Le code ci-dessous illustre le processus :

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

Ce code parcourt une liste de pointeurs Box et pousse l'adresse de chaque fonction membre HitTest sur la liste std::list. Chaque fonction membre est représentée par un pointeur vers la fonction membre qui fait référence au pointeur this de l'objet Box spécifique.

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