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:

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;
};
En gros j'ai 2 ou 3 classes susceptibles d'exécuter des évéments.
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:
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 );
}
Seulement voilà, je ne parviens pas à trouver une façon d'implémenter la classe Event pour pouvoir faire ça.

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?