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