当前位置: 代码迷 >> 综合 >> C++ 类内函数指针的使用的使用
  详细解决方案

C++ 类内函数指针的使用的使用

热度:78   发布时间:2023-09-27 17:06:09.0

引言

      在C++实际应用中,经常遇到需要处理n多命令的场景。比如输入是xml的字符串,需要根据里面的定义实现不同的处理功能。

在这种场景下,我们通常是接收xml作为一个接口,在里面分析出来命令类型,然后使用一堆的if else语句来进行处理。

但是在这种极其具有统一性的场景中,还可以使用函数处理指针,来进行处理。

代码示例

#include <string>
#include <map>
class MsgDealer
{
public:typedef void (MsgDealer::*on_msg)(const std::string& msg);void OnMsg1(const std::string& msg);void OnMsg2(const std::string& msg);MsgDealer(){m_mapDeals["on_msg_1"] = &MsgDealer::OnMsg1;m_mapDeals["on_msg_2"] = &MsgDealer::OnMsg2;}virtual ~MsgDealer(){}void OnCmd(const std::string& type, const std::string& msg){std::map<std::string, on_msg>::iterator iter = m_mapDeals.find(type);if (iter != m_mapDeals.end()){(this->*(iter->second))(msg);}};private:std::map<std::string, on_msg> m_mapDeals;
};

 

 

  相关解决方案