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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM