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;
    };
  • 相关阅读:
    堆内存与栈内存
    struts2 ajax 实现方式
    Hibernate 配置派生属性
    高效 jquery 的奥秘
    对于Maven管理的项目制定虚拟目录
    ThreadLocal 笔记
    java Thread.join()
    vi 使用笔记
    浮动闭合方案:clearfix
    熬夜之弊及改善之法
  • 原文地址:https://www.cnblogs.com/limedia/p/cxx_class_inner_poiner.html
Copyright © 2011-2022 走看看