是否可以在运行时获取某个命名空间中的函数列表或程序中的所有函数?
我有一个函数指针映射,我需要自己添加命令,但我想:为什么不创建一个命名空间并让程序在运行时完成工作呢?
类似(伪代码):
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 中实现吗?或者我的目标的任何替代方案?