设计思路
- 定义消息结构体:用于封装消息相关信息,如消息类型、参数等。
- 消息映射表:使用数据结构(如哈希表)来存储消息类型与对应的处理函数之间的映射关系。
- 消息分发函数:根据接收到的消息类型,从映射表中查找并调用相应的处理函数。
关键代码片段
// 定义消息结构体
struct Message {
int msgType;
// 可以添加更多参数,这里简单示例
int param;
};
// 定义消息处理函数指针类型
using MessageHandler = void(*)(const Message&);
// 消息映射表
std::unordered_map<int, MessageHandler> messageMap;
// 注册消息处理函数
void RegisterMessageHandler(int msgType, MessageHandler handler) {
messageMap[msgType] = handler;
}
// 消息分发函数
void DispatchMessage(const Message& msg) {
auto it = messageMap.find(msg.msgType);
if (it != messageMap.end()) {
it->second(msg);
} else {
// 处理未注册消息的情况
std::cout << "Unhandled message type: " << msg.msgType << std::endl;
}
}
// 示例消息处理函数
void HandleMessage1(const Message& msg) {
std::cout << "Handling message 1 with param: " << msg.param << std::endl;
}
// 测试代码
int main() {
// 注册消息处理函数
RegisterMessageHandler(1, HandleMessage1);
// 构造消息
Message msg;
msg.msgType = 1;
msg.param = 100;
// 分发消息
DispatchMessage(msg);
return 0;
}