Bonjour à tous,
j'ai besoin d'implémenter un gestionnaire d'événements, et il y a plusieurs points qui me posent problème.
D'abord, quelques specs:
-> l'appli n'utilise qu'un seul thread, donc pas besoin de gérer le multi-thread
-> un evenement tel que je le conçoit (peut-être que je me trompe ici) se définit par:
. une classe cible
. une fonction membre de cette classe cible
. zéro, un ou deux paramètre(s) de type string et/ou int
Voici une ébauche de mon gestionnaire d'événements tel que j'aimerais l'implémenter:
En gros j'ai 2 ou 3 classes susceptibles d'exécuter des évéments.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 class EventManager { public: int PushFront( Event evt ) // ajoute un evenmt en fin de liste {eventList.push_front(evt);} int PushBack( Event evt ); // ajoute un evenmt en debut de liste {eventList.push_back(evt);} void ExecuteEvents(); // execute sequentiellement tous les evenmts private: std::list<Event> eventList; };
Un événement doit pouvoir être créé n'importe où dans le code (dans n'importe quelle classe) et ajouté au gestionnaire d'événement.
Le but c'est qu'au final, le code de EventManager::ExecuteEvents() ressemble à ça:
Seulement voilà, je ne parviens pas à trouver une façon d'implémenter la classe Event pour pouvoir faire ça.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 /*static*/ void ExecuteEvent(Event &event){event.Execute();} void EventManager::ExecuteEvents() { for_each( eventList.begin(), eventList.end(), ExecuteEvent ); }
Je n'ai pas réussi à trouver grand chose sur le net à ce sujet (et puis la connexion que j'ai en ce moment ne facilite pas la recherche...).
Qu'en pensez-vous?
Partager