Bonjour,
Je souhaite creer un gestionnaire d'event pour la SFML.
J'ai decider de faire ce dernier avec une map ayant pour clef le type d'event et pour valeur un pointeur sur une fonction membre de ce meme objet.
J'ai essayer beaucoup de "magouille" différentes et celle que je vous joint est celle qui me semble le plus correcte.
Pouvez vous m'aider svp ?
EventManager.h:
EventManager.cpp:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 #pragma once #include <map> #include <iostream> #include <string> #include "mySFML.h" class IEventManager { public: virtual void closeApp(sf::RenderWindow *); }; typedef void (IEventManager::*FPTR)(sf::RenderWindow*); class EventManager: public IEventManager { private: sf::Event currentEvent; sf::RenderWindow *app; std::map<sf::Event::EventType, FPTR> eventMap; public: EventManager(sf::RenderWindow *app); ~EventManager(void); void initEventMap(); void treatEvents(); void closeApp(sf::RenderWindow *); };
Le sortie de compilation:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 #include "EventManager.h" EventManager::EventManager(sf::RenderWindow *win) { app = win; initEventMap(); } void EventManager::closeApp(sf::RenderWindow *app) { app->close(); } void EventManager::initEventMap() { eventMap[(sf::Event::Closed)] = &IEventManager::closeApp; } void EventManager::treatEvents() { while (app->pollEvent(currentEvent)) { if (eventMap[currentEvent.type]) { eventMap[currentEvent.type](this->app); } } } EventManager::~EventManager(void) { }
Voila merci.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 1>------ Début de la génération*: Projet*: ZERO_CHECK, Configuration*: Debug Win32 ------ 2>------ Début de la génération*: Projet*: c_rtype++, Configuration*: Debug Win32 ------ 2> main.cpp 2> EventManager.cpp 2>..\src\EventManager.cpp(25): error C2064: le terme ne correspond pas à une fonction qui prend 1 arguments 2> Génération de code en cours... 3>------ Début de la génération*: Projet*: ALL_BUILD, Configuration*: Debug Win32 ------ 3> Build all projects 4>------ Génération ignorée*: Projet*: INSTALL, Configuration*: Debug Win32 ------ 4>Projet non sélectionné dans le cadre d'une génération pour cette configuration de solution 5>------ Génération ignorée*: Projet*: PACKAGE, Configuration*: Debug Win32 ------ 5>Projet non sélectionné dans le cadre d'une génération pour cette configuration de solution ========== Génération*: 2 a réussi, 1 a échoué, 0 mis à jour, 2 a été ignoré ==========
Partager