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