我有Event<T>
類事件句柄,其中T
是仿函數類型的簽名void (*)()
(或某些基於類的閉包)。枚舉所有SomeClass <T>所有對象T
在下面的代碼省略ctor複製構造對象到地圖events
。
template <class T>
class Event
{
...
T action;
long explode;
static map<string, Event> events;
...
void shot()
{
action();
}
...
static void check()
{
// foreach pair in events
if (itsATimeFor(pair->second.explode))
pair->second.shot();
}
};
如果任何事件在其孔有着火和成功投籃的check()
功能測試。
當前實現有一些主要的缺點:它測試只有一種類型的每個呼叫的事件,因此是無用的
的問題是,如何枚舉所有實例Event<T>
類的所有事件?
看來你正在構建自己的事件處理系統。你有沒有考慮過使用[Boost.Signals](http://www.boost.org/doc/libs/release/doc/html/signals.html)? –