特定の名前空間内の関数のリスト、または実行時にプログラム内のすべての関数を取得することは可能ですか?
関数ポインタ マップがあり、独自にコマンドを追加する必要がありますが、名前空間を作成して、実行時にプログラムに作業を任せてみませんか?
次のようなもの(疑似コード):
typedef bool (*command)(void);
namespace Commands
{
bool Start(void)
{
return true;
}
bool End(void)
{
return true;
}
};
std::map<std::string,command> CommandMap;
main()
{
for(each function in namespace Commands)
{
CommandMap[std::string(function_name)] = function;
}
CommandMap["Start"]();
CommandMap["End"]();
return 0;
}
それ以外の
std::map<std::string,command> CommandMap;
main()
{
CommandMap["Start"] = Commands::Start;
CommandMap["End"] = Commands::End;
//list of thousands of other commands......
CommandMap["Start"]();
CommandMap["End"]();
return 0;
}
これは C++ または C++11 で実現できますか? または私の目標に代わるものはありますか?