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