Мне было интересно, будет ли это приемлемым подходом к написанию обратных вызовов:
Сохранение обратных вызовов:
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
});
Мой самый большой вопрос касался передачи обратного вызова по значению. Является ли этот подход действительным?