1

我一直在阅读有关事件管理器的信息,并且我了解基本机制,或者我是这么认为的。我一直在看到一些情况,例如

IEvent* pEvent = m_events;

while(pEvent)   {
    removeEvent(pEvent);
    pEvent->Dispatch(); // What is this?
    pEvent = pEvent->Next;
}

然而,做“pEvent->Dispatch”有什么意义呢?我认为这与事件监听有关,但我不确定是否诚实。

4

1 回答 1

2

在调用您提供的代码片段时,事件的“侦听”已经完成。“监听”之后,所有的事件都已经收集到了某个容器中,每个事件都需要进行处理。这Dispatch可能是类上的一个虚拟方法IEvent,因此每个派生事件都可以由特定于该类型事件的例程处理。

class IEvent {
protected:
    virtual ~IEvent () {}
    virtual void Dispatch () = 0;
    //...
};
于 2012-08-13T05:39:58.583 回答