回调函数中的GLFW传递更多参数然后打算

时间:2017-05-17 18:34:49

标签: c++ callback glfw

我正在使用GLFW和他在C ++中的回调函数。 我想在回调函数中实现的是修改类Keyboard类型的变量。

回调函数必须是void(* GLFWkeyfun) (GLFWwindow *, int, int, int, int)

类型

glfwSetKeyCallback(GLFWwindow *window, GLFWkeyfun cbfun)不允许我传递捕获Keyboard的lambda函数。

它适用于模板化函数,但它非常无序,因为Keyboard必须在编译时定义,并且不会使代码面向对象。(即,如果我想创建一个新窗口并不像制作新实例那么容易。)

我尝试扩展GLFWwindow以便我可以使用多态,这样我就可以将包含Keyboard的派生对象作为glfwSetKeyCallback的第一个参数,这样我就可以从回调函数的第一个参数中获取相同的对象。但当我扩展GLFWwindow我的IDE告诉我"不允许不完整类型"

如何在回调中修改Keyboard?我真的希望我的设计尽可能模块化。

1 个答案:

答案 0 :(得分:0)

我应该多研究一下。 我可以将Keyboard放入glfwSetWindowUserPointer并使用glfwGetWindowUserPointer从回调中获取。