我想实现一个简单的类似Quake的控制台。这个实现大致基于Doom 3中的实现:什么是地震式控制台中自动命令unregistring的正确方法?
class Console
{
public:
...
typedef boost::function<void(const Arguments&)> Callback;
void register_command(const std::string& name, const Callback& callback);
void unregister_command(const std::string& name);
};
但是,我打算支持也可以卸载的可加载模块。当模块被卸载时,它需要注销它的命令。将它们一个一个地取消注册是很乏味和容易出错的。如何自动化它?