std :: function с лямбда-ошибкой для обратных вызовов событий SDL

Я просто хочу передать лямбда-функцию в функцию для обратных вызовов. я использую 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);
}

0

Решение

Совершенно глупая ошибка … Параметры не совпадают. Правильный код работает ниже. То есть У меня не было 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);
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]