我正在使用GLFW和他在C ++中的回调函数。
我想在回调函数中实现的是修改类Keyboard
类型的变量。
回调函数必须是void(* GLFWkeyfun) (GLFWwindow *, int, int, int, int)
glfwSetKeyCallback(GLFWwindow *window, GLFWkeyfun cbfun)
不允许我传递捕获Keyboard
的lambda函数。
它适用于模板化函数,但它非常无序,因为Keyboard
必须在编译时定义,并且不会使代码面向对象。(即,如果我想创建一个新窗口并不像制作新实例那么容易。)
我尝试扩展GLFWwindow
以便我可以使用多态,这样我就可以将包含Keyboard
的派生对象作为glfwSetKeyCallback
的第一个参数,这样我就可以从回调函数的第一个参数中获取相同的对象。但当我扩展GLFWwindow
我的IDE告诉我"不允许不完整类型"
如何在回调中修改Keyboard
?我真的希望我的设计尽可能模块化。
答案 0 :(得分:0)
我应该多研究一下。
我可以将Keyboard
放入glfwSetWindowUserPointer
并使用glfwGetWindowUserPointer
从回调中获取。