我有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)? –