Я просто хочу передать лямбда-функцию в функцию для обратных вызовов. я использую std::function
для обратных вызовов. Мне нужно передать данные в эту функцию, и именно здесь я сталкиваюсь с проблемами. В приведенном ниже коде ошибки с надписью «невозможно преобразовать в ожидаемый тип». Цель состоит в том, чтобы использовать обратные вызовы для событий с SDL
, Я не уверен, что это правильный путь. Я храню функцию обратного вызова в unordered_map
с ключом, являющимся SDL_Event.type
и vector
из std::function
,
Я звоню dispatch()
в случае опроса и subscribe
в настройке. Ошибка возникает в []
из subscribe()
лямбда
// main.cpp
window->subscribe(SDL_KEYDOWN, [](SDL_Event& ev) -> void {
std::cout << "key pressed" << std::endl;
});
// eventhandler.cpp
void EventHandler::subscribe(int _event, std::function<void(const SDL_Event&)> _callback)
{
m_callbacks[_event].push_back(_callback);
}
Совершенно глупая ошибка … Параметры не совпадают. Правильный код работает ниже. То есть У меня не было const
в лямбде …
window->subscribe(SDL_KEYDOWN, [](const SDL_Event& ev) -> void {
std::cout << "key pressed" << std::endl;
});
void EventHandler::subscribe(int _event, std::function<void(const SDL_Event&)> _callback)
{
m_callbacks[_event].push_back(_callback);
}
Других решений пока нет …