Present 是一个将函数注册为回调的类。
class Action {
private:
static std::multimap<std::string, std::function<void()>> actions;
public:
static void registerAction(const std::string &key, std::function<void()> action);
}
显然它不能注册成员函数,因为指向成员函数的函数指针对象需要指定类,但每个类都应该能够注册它们的函数。std::function<void(Class&)>
使用模板系统,我无法从我想的静态类的一个“实例”访问所有操作。这怎么可能实现?
示例它的外观:
class B {
public:
B() {
Action::registerAction("some_action", &callMe);
}
void callMe(){}
}