码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2019-01-17 15:10:21      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:std   指针的使用   nms   string   bsp   c++ 类   ons   clu   根据   

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

 

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

标签:std   指针的使用   nms   string   bsp   c++ 类   ons   clu   根据   

原文地址:https://www.cnblogs.com/limedia/p/cxx_class_inner_poiner.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!