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&)>
テンプレート システムを使用すると、静的クラスの 1 つの「インスタンス」からすべてのアクションにアクセスできませんでした。これはどのように実現できますか?
例:
class B {
public:
B() {
Action::registerAction("some_action", &callMe);
}
void callMe(){}
}