std :: function与SDL事件回调的lambda错误

时间:2017-04-01 02:23:19

标签: c++ lambda sdl eventhandler std-function

我只想将lambda函数传递给函数进行回调。我正在使用std::function进行回调。我需要将数据传递给此函数,这是我遇到问题的地方。下面的代码错误说"无法转换为预期类型"。目标是对SDL的事件使用回调。我不确定这是否是正确的方法。我将回调函数存储在unordered_map中,密钥为SDL_Event.typevector std::function

我在事件轮询中调用dispatch(),在设置中调用subscribe。错误发生在[] lambda

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);
}

1 个答案:

答案 0 :(得分:0)

非常愚蠢的错误......参数不匹配。有效的正确代码如下。即我在lambda中没有.wrapper { display: flex; justify-content: center; align-items: center; height: 300px; position: relative; } .item { display: none; position: absolute; } .item.active { display: block; z-index: 2; } #next-button { z-index: 3; position: absolute; bottom: 0; } .active_link { background-color: red; } .menu { display: flex; width: 300px; justify-content: space-between; height: 40px; } .menu li { width: 30px; } .submit-it { display: none; } ......

const