C++表驱动法代码示例
来源:互联网 发布:体育赛事直播网络电视 编辑:程序博客网 时间:2024/06/10 21:57
// 3个文件,Client.cpp, TableDrave.h, TableDrive.cpp// vvvvv Client.cpp begin// ------------------------------------------------------------// Name : Client.cpp// Description : 调用接口// History : // ------------------------------------------------------------#include "TableDrive.h"// ------------------------------------------------------------int main(){ TableDrive test; test.HandleKeyword(KEYWORD_A); test.HandleKeyword(KEYWORD_B); test.HandleKeyword(KEYWORD_C); test.HandleKeyword(KEYWORD_START); test.HandleKeyword(KEYWORD_D); return 0;}// ^^^^^ Client.cpp end // vvvvv TableDrive.h begin// ------------------------------------------------------------// Name : TableDrive.h// Description : 表驱动头文件// History : // ------------------------------------------------------------#ifndef _TEST_DRIVE_H#define _TEST_DRIVE_H#include <map>// ------------------------------------------------------------// 测试用关键字enum KEYWORD{ KEYWORD_START = -1, KEYWORD_A = 0, KEYWORD_B, KEYWORD_C, KEYWORD_D, KEYWORD_END,};// ------------------------------------------------------------// 可以使用 std:: 单个引用using namespace std;class TableDrive{public: // ------------------------------------------------------------ // Description : // 根据关键字,执行处理函数 // Parameters : // string keyword,关键字 // Return Value : // bool,true,函数执行成功,false,找不到键字对应的函数,或函数执行失败 // Errors : // 无 // ------------------------------------------------------------ bool HandleKeyword(int keyword); // ------------------------------------------------------------ // Description : // 关联关键字到处理函数 // Parameters : // 无 // Return Value : // bool,true,正常,false,异常 // Errors : // 无 // ------------------------------------------------------------ bool MapKeyToHandle(); TableDrive(); ~TableDrive(); private: // vv 处理函数,true,执行成功,false,执行失败 bool HandleKeyA(); bool HandleKeyB(); bool HandleKeyC(); // ^^ private: // :TRICKY: 成员函数指针定义 typedef bool (TableDrive:: *PHandle)(void); map<int, PHandle> m_KeyToHandle; // 关键字对应处理函数};#endif// ^^^^^ TableDrive.h end // vvvvv TableDrive.cpp begin// ------------------------------------------------------------// Name : TableDrive.cpp// Description : 表驱动实现文件// History : // ------------------------------------------------------------#include <stdio.h>#include "TableDrive.h"// ------------------------------------------------------------// 根据关键字,执行处理函数bool TableDrive::HandleKeyword(int keyword){ typedef map<int, PHandle>::const_iterator CI; CI iter = m_KeyToHandle.find(keyword); // 没有搜索到关键字 if (m_KeyToHandle.end() == iter) { printf("\n @@ search Keyword %d fail!\n", keyword); return false; } // :TRICKY: 注意成员函数指针的引用格式 PHandle pFunction = iter->second; return (this->*pFunction)();}TableDrive::TableDrive(){ printf("\n vv TableDrive::TableDrive()\n"); MapKeyToHandle();}TableDrive::~TableDrive(){ printf("\n ^^ TableDrive::~TableDrive()\n");}// ------------------------------------------------------------// 关联关键字到处理函数bool TableDrive::MapKeyToHandle(){ m_KeyToHandle[KEYWORD_A] = &TableDrive::HandleKeyA; m_KeyToHandle[KEYWORD_B] = &TableDrive::HandleKeyB; m_KeyToHandle[KEYWORD_C] = &TableDrive::HandleKeyC; return true;}// 处理函数 Abool TableDrive::HandleKeyA(){ printf("\n ** A, HandleKeyA()\n\n"); return true;}bool TableDrive::HandleKeyB(){ printf("\n ** B, HandleKeyB()\n\n"); return true;}bool TableDrive::HandleKeyC(){ printf("\n ** C, HandleKeyC()\n\n"); return true;}// ^^^^^ TableDrive.cpp end
- C++表驱动法代码示例
- C-表驱动-代码
- linux驱动学习示例代码
- C语言代码示例
- platform平台设备驱动简化示例代码
- 驱动获取自身路径示例代码
- c#的委托代码示例
- c#的委托代码示例
- Pro*C简单示例代码
- C#Socket 异步代码示例
- C编程规范, 示例代码。
- C调用dll示例代码
- 代码大全 表驱动法
- c语言-登录代码示例
- c#(Socket)异步套接字代码示例
- c#(Socket)异步套接字代码示例
- python调用 C/C++ 代码示例
- C语言简单示例(代码注释)
- 浅谈大锅饭思想在应用软件项目开发团队中的利与弊
- TCP/IP协议《3》
- Android ListView自动加载 Android ListView pull up to refresh.
- 字符串匹配之KMP算法思路、原理与Java实现
- 两个listbox之间转移数据
- C++表驱动法代码示例
- 使用虚拟磁盘管理软件详细介绍
- GBin1插件分享:10个超棒tooltip的jQuery插件
- 八一八我的求职之路~
- 传智播客Java线程
- IRQ LOCK: IRQ0 is locking the system, disabled
- Update...From
- 文本框禁止输入特殊字符
- 百度笔试题 A的B次方的后三位