我想知道这是否是一种可接受的编写回调的方法:
存储回调:
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
});
我最大的问题是关于按值传递回调。这是一种有效的方法吗?