复习 C++ 中类的函数指针
2016-01-16 00:52
393 查看
函数指针这种东西,平时工作中基本上不会用到(搬砖的怎么可能用到它呢)。
如果搬砖的在工作中也要接触到函数指针,那就说明一个问题,这套框架不好用,不成熟。
那函数指针会用在哪里咧?你猜咯~~
下面是一些基本的用法,根据消息号调到对应的函数:
如有其他需求,扩展一下就好。。
如果搬砖的在工作中也要接触到函数指针,那就说明一个问题,这套框架不好用,不成熟。
那函数指针会用在哪里咧?你猜咯~~
下面是一些基本的用法,根据消息号调到对应的函数:
#include <iostream> #include <map> enum MsgCode { MSGCODE1 = 1, MSGCODE2 = 2, }; class Fuck { public: Fuck(int i=0):f(i){ // register functions mapFunction[MSGCODE1] = &Fuck::method1; mapFunction[MSGCODE2] = &Fuck::method2; // ... } public: int method1(int i); int method2(int i); // ... public: bool processMsg(int msg_code, int msg_data); private: int f; private: std::map<int, int (Fuck::*)(int i)> mapFunction; // int (Fuck::*mapFunction[1024])(int i); // std::map<std::string, int (Fuck::*)(int i)> mapFunction; }; int Fuck::method1(int i) { return i * f; } int Fuck::method2(int i) { return i * f + 1; } bool Fuck::processMsg(int msg_code, int msg_data) { std::map<int, int (Fuck::*)(int i)>::iterator it = mapFunction.find(msg_code); if(it == mapFunction.end()) return 0; int result = (this->*it->second)(msg_data); std::cout << result << std::endl; return 1; } int main(int argc, char** argv) { Fuck fuck(1); int msg_code = MSGCODE1; int msg_data = 1; fuck.processMsg(msg_code, msg_data); msg_code = MSGCODE2; msg_data = 1; fuck.processMsg(msg_code, msg_data); return 0; }
如有其他需求,扩展一下就好。。
相关文章推荐
- Sicily 2403. Voting
- STL编程题3(C++程序设计第9周)
- 字符串与数字转换-C语言
- STL编程题2(C++程序设计第9周)
- 初步剖析C语言编程中的结构体
- C、C++中关键字static的区别
- C/C++程序编译的内存分配情况
- 用C++设计一个不能被继承的类
- STL编程题1(C++程序设计第1周)
- Max Sum (HD_1003) 基础DP
- 【C语言】三种方法实现strlen函数
- 类的初步知识(C++中直角坐标和极坐标之间的转换代码)
- 用c语言指针实现给整形数组冒泡排序
- 一起talk C栗子吧(第一百零二回:C语言实例--使用信号量进行进程间同步与互斥三)
- 【C语言】字符串替换空格:请实现一个函数,把字符串中的每个空格替换成“%20”。
- iOS 学习第八天 C语言 二维数组
- 【LeetCode-326】Power of three 上(C++)
- switch使用总结
- 初探C++流
- C/C++小知识