【问题标题】:Access instance from callback function从回调函数访问实例
【发布时间】:2014-04-04 08:54:07
【问题描述】:

如何访问 GLFW3 输入回调函数中的类实例,例如 this one

我希望我的实例在特定事件发生时做点什么。每个实例可能针对特定事件执行不同的操作。

具体来说,我的班级有一个 std::map>,其中一个键映射到一个函数。

编辑:我尝试了以下方法,但这给了我一个错误,它与 glfwSetKeyCallback 函数调用不匹配。

glfwSetKeyCallback(window, [this](GLFWwindow * window, int key, int scancode, int action, int mods){
    addCommand(m_events.at(key));
});

【问题讨论】:

  • 你的意思是当一个键映射到一个函数时,对吧?
  • @WhozCraig:嗯,确定吗?我的意思是,按下一个键,就会调用相应的函数。
  • 我只问是因为“函数映射到键的位置”。似乎与之前提议的地图完全相反。只是想澄清一下。
  • 我一直以为是相反的。嗯,你总能学到新东西。谢谢!

标签: c++ callback glfw


【解决方案1】:

取自here

你需要这样的东西:

glfwSetWindowUserPointer(window, this);
glfwSetKeyCallback(window, [](GLFWwindow * window, int key, int scancode, int action, int mods){

    Window * win = static_cast<Window *>(glfwGetWindowUserPointer(window));
    win->addCommand(win->m_events.at(key));

});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-14
    • 1970-01-01
    • 2019-07-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多