在unordered_map中存放函数指针

来源:互联网 发布:c语言的应用范围 编辑:程序博客网 时间:2024/06/06 08:24

在文章C++类里面使用函数指针 和对于C++函数指针的理解 两篇文章中已经对函数指针有一定的说明,这里介绍一下在map中存放指针。

其实在map中存放指针的想法的得来是因为在函数中的if--else语句太多,根据不同的条件执行不同的语句,然后就想为什么不把判断条件放在map的key位置,而把函数指针放在value位置呢,这样一个while循环就可以执行完判断和函数调用两个功能了。

头文件中包含map

#include <unordered_map>

声明map

std::unordered_map<char,BOOL(ClassName::*)()> v;

插入函数

v[BOOT] = &ClassName::OrderBoot;v[KEY] = &ClassName::OrderKey;v[ERASE] = &ClassName::OrderErase;v[SPERASE] = &ClassName::OrderSPErase;v[PROGDATA] = &ClassName::OrderProgData;v[PROGRAM] = &ClassName::OrderProgram;v[BOOTEND] = &ClassName::OrderBootEnd;v[GETVERSION] = &ClassName::OrderGetVersion;v[MAINSTART] = &ClassName::OrderMainStart;inStart;

然后

UCHAR orderList[10];orderList[0] = BOOT;orderList[1] = KEY;orderList[2] = ERASE;orderList[3] = BOOTEND;orderList[4] = GTVERSION;orderList[5] = GETVERSION;orderList[6] = MAINSTART;while(state != 0)    {        dlg->sendThreadState = state;        state = ((dlg->*v[orderList[j]])())? orderList[++j]:0;    }   
0 0
原创粉丝点击