以下は私のコードです....
ここでマップを使用していました..マップの代わりに、2次元配列を使用したい. ユーザーは 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;
}