Création de map de pointeur sur fonction membre.
Fermé
Spowny
Messages postés
7
Date d'inscription
mercredi 15 août 2012
Statut
Membre
Dernière intervention
6 janvier 2013
-
6 janv. 2013 à 04:07
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 - 8 janv. 2013 à 00:34
mamiemando Messages postés 33446 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 20 décembre 2024 - 8 janv. 2013 à 00:34
A voir également:
- Création de map de pointeur sur fonction membre.
- Google map satellite gratuit - Guide
- Fonction si et - Guide
- Création de compte gmail - Guide
- Creation de compte google - Guide
- Membre indisponible vinted - Guide
1 réponse
mamiemando
Messages postés
33446
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 décembre 2024
7 812
8 janv. 2013 à 00:34
8 janv. 2013 à 00:34
La syntaxe du typedef me paraît bizarre.
Personnellement, pour éviter d'avoir à passer des pointeurs de fonctions, j'aurais plutôt fait un foncteur (par exemple std::less en est un dans la STL)
http://www.cplusplus.com/reference/functional/less/
... ou la généralisation d'un foncteur (un visiteur) :
https://www.boost.org/doc/libs/1_52_0/libs/graph/doc/visitor_concepts.html
Dans ton cas ton visiteur ressemblerait à ceci :
Ensuite tu passes une instance de ton visiteur en paramètre de ton constructeur EventManager et l'affaire est réglée ;-) Voire ici, comme le visiteur ne stocke rien, on peut même le créer directement dans le constructeur
Ensuite pour instancier ta fonction il suffit d'appeler this->vis.close_application(...).
Bonne chance
Personnellement, pour éviter d'avoir à passer des pointeurs de fonctions, j'aurais plutôt fait un foncteur (par exemple std::less en est un dans la STL)
http://www.cplusplus.com/reference/functional/less/
... ou la généralisation d'un foncteur (un visiteur) :
https://www.boost.org/doc/libs/1_52_0/libs/graph/doc/visitor_concepts.html
Dans ton cas ton visiteur ressemblerait à ceci :
struct mon_visiteur_t { void close_application(sf::RenderWindow *) { } };
Ensuite tu passes une instance de ton visiteur en paramètre de ton constructeur EventManager et l'affaire est réglée ;-) Voire ici, comme le visiteur ne stocke rien, on peut même le créer directement dans le constructeur
class EventManager: public IEventManager { private: sf::Event currentEvent; sf::RenderWindow *app; std::map<sf::Event::EventType, FPTR> eventMap; mon_visiteur_t vis; public: EventManager( sf::RenderWindow *app, ): vis() { ... } };
Ensuite pour instancier ta fonction il suffit d'appeler this->vis.close_application(...).
Bonne chance