问题描述
通过日志可以看到很多消息中心的消息都没有接收到,但是跟踪调试发现一切都是正常的
问题原因
再一次是因为 dynamic_cast
转换失败的原因。
解决方法
将 dynamic_cast
替换 static_cast
后可以使用。
template <class M>
class BaseMessage : public IMessage
{
friend class MessageCenter;
//...
private:
virtual bool SendTo(IHandler *pHandler) const
{
BaseHandler<M> *p = static_cast<BaseHandler<M> *>(pHandler);
if (!p) {
return false;
}
Singleton::GetMessageCenter()->RecordHandle(p, this);
return p->Handle((const M *)this);
}
//...
};