08年05月21日

事件订阅,subscribeEvent(事件名,Event::subcribe(回调函数);
方法subcribe通过一个Map Container;
typedef std::multimap<Group, Connection> SlotContainer,添加到容器中,
d_slots.insert(std::pair<Group,Connection>(group,c));而在事件触发时,
Event操作()遍历每个订阅事件的函数,代码如下:
for (; iter != end_iter; ++iter)
    args.handled |= (*iter->second->d_subscriber)(args);
这样订阅事件的函数都会遍历回调到!

遇见一个CEGUI的设计问题
有的是函数指针,而有的是类型的别名?比如:
typedef bool (*SortCallback)(const ItemEntry* a, const ItemEntry* b);
typedef bool (SlotFunction)(const EventArgs&); //为什么不声明为函数指针呢?
typedef bool(T::*MemberFunctionType)(const EventArgs&);
typedef bool PropertyCallback(Window* window, String& propname, String& propvalue, void* userdata);

你可能感兴趣的:(08年05月21日)