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

在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;
};

 

posted @ 2019-01-17 14:11  media_myself  阅读(4125)  评论(0编辑  收藏  举报