下面是我的代码....
我在这里使用了地图..而不是地图我想使用二维数组。用户将输入命令代码说 50 并且将调用注册的相应函数
to_do_commands.registerCommand(50,get_status);
完整代码如下
#include "stdafx.h"
#include <assert.h>
#include <iostream>
#include <map>
#include <string>
using namespace std;
void ping(void)
{
cout << "ping command executed\n";
}
void get_status()
{
cout<<"get status executed";
}
class ToDoCommands
{
public:
typedef void (*FunctionPtr)();
typedef int Code;
void registerCommand(Code code,FunctionPtr);
void callFunction(Code);
private:
map<Code,FunctionPtr> func_map;
};
void ToDoCommands::registerCommand(Code code,FunctionPtr func_ptr)
{
func_map[code] = func_ptr;
}
void ToDoCommands::callFunction(Code code)
{
assert(func_map.find(code)!=func_map.end());
func_map[code]();
}
int main(int argc,char **argv)
{
ToDoCommands to_do_commands;
// to_do_commands.registerFunction(50,ping);
to_do_commands.registerCommand(10,ping);
to_do_commands.registerCommand(50,get_status);
to_do_commands.callFunction(50);
return 0;
}