zoukankan      html  css  js  c++  java
  • 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;
    };
  • 相关阅读:
    1.Lucene
    docker 安装常用服务
    docker 常用命令
    05-vue中使用样式
    04-vue的事件修饰符
    03-用基本指令实现跑马灯效果
    02-vue基本指令
    01-vue分层概念MVVM
    Redis-持久化机制
    BigDecimal工具类
  • 原文地址:https://www.cnblogs.com/limedia/p/cxx_class_inner_poiner.html
Copyright © 2011-2022 走看看