Ahoj, píšu si EventDispatcher takový jaký má ActionScript3 a narazil jsem na problém. Náznak funkčnosti: dispatcher funguje tak, že třídy které ho využívají do něj přidají Listener, ten obsahuje stringrovou proměnnou názvu eventy a odkaz("handler") na svoji funkci u nich ve třídě. Dispatcher potom při přijetí eventy odjinud projde všechny listenery a podle názvu eventy volá handlery v listenerech. Všechno funguje v mainu, ale problém je, že když jsou handlery ve třídách, EventDispatcher při vytvoření listeneru nerozezná jednotlivé typy funkcí protože chodí každá od jiné třídy. Dá se nějak udělat aby měl dispatcher typdef handleru nějakou obecnou hodnotu?
takhle to vypadá:
typedef void(*EventHandler)(Event*);
při kompilaci vyhodí chybu
no matching function for call to 'Scene::addEventListener(const string&, void (Game::*)(GameEvents::Event*))'
protože typ handleru je jen *EventHandler ne Game::*EventHandler ale když mám x tříd tak to potřebuji obecně.
Dá se to tedy nějak rozumně udělat? Mám už sice vymyšlenou jednu metodu jak to udělat ale přidává další třídu a je tam potřeba vyšší režie ze strany tříd které využívají dispatcher takže bych se bez této metody rád obešel.
díky moc za odpovědi, zdraví pretis.