2010-12-07 17 views
0

J'ai 2 vecteurs qui créent de nouveaux boutons à des endroits aléatoires. Le push_back est déclenché par une minuterie. Chaque push_back aurait un nouvel emplacement aléatoire et un nouveau randval. Cliquer sur un bouton déclenche cb_addscore.Comment puis-je laisser ma fonction de rappel savoir quel élément d'un vecteur l'a appelé?

m.push_back(new mole(Point(randx*50+25,randy*50+25),randval)); 
v.push_back(randval); 
mb.push_back(new Button(Point(randx*50,randy*50),50,50,"1",cb_addscore)); 

Dans la fonction de rappel cb_addscore, je suis en train de supprimer le bouton qui a déclenché, ce qui serait un élément spécifique des vecteurs m et mb. Mais comment puis-je laisser cb_addscore savoir quel élément l'a déclenché?

+0

Vous ne spécifiez aucune bibliothèque et Button et Point ne sont pas des classes C++ Standard. Veuillez stipuler votre environnement afin que les personnes qui le connaissent puissent vous aider. –

+0

Il semble qu'il utilise fltk (Fast light toolkit). Cette boîte à outils n'utilise pas RAII, ce qui pourrait expliquer les instructions raw 'new'. –

Répondre

1

Vous pouvez utiliser un conteneur associatif au lieu d'utiliser un vecteur et transmettre la clé supplémentaire à la fonction.

Vous pouvez trouver std::map utile pour cette tâche.