これがコールバックを書くための受け入れられたアプローチであるかどうか疑問に思いました:
コールバックの保存:
struct EventHolder {
std::function<void()> Callback;
EventTypes::EventType Type;
};
std::vector<Events::EventHolder> EventCallbacks;
メソッド定義:
void On(EventType OnEventType,std::function<void()>&& Callback)
{
Events::EventHolder NewEvent;
NewEvent.Callback=std::move(Callback);
NewEvent.Type=OnEventType;
EventCallbacks.push_back(std::move(NewEvent));
}
バインディングイベント:
Button->On(EventType::Click,[]{
// ... callback body
});
私の最大の質問は、コールバックを値で渡すことに関するものです。これは有効なアプローチですか?