C++ GLFW的范围界定问题

C++ GLFW的范围界定问题,c++,scope,glfw,C++,Scope,Glfw,我正在编写一个围绕GLFW的库,以及其他一些库。我有一个需要知道用户界面事件的类,但GLFW使用回调系统,我必须指定一个函数,当事件发生时,GLFW将自动调用该函数。这会引起问题,因为据我所知,我必须提供GLFW的那些函数无法与我的类的对象相关联。例如: class MyClass { MyClass() { // Initialize GLFW glfwSetKeyCallback(window, keyboardEventFunction);

我正在编写一个围绕GLFW的库,以及其他一些库。我有一个需要知道用户界面事件的类,但GLFW使用回调系统,我必须指定一个函数,当事件发生时,GLFW将自动调用该函数。这会引起问题,因为据我所知,我必须提供GLFW的那些函数无法与我的类的对象相关联。例如:

class MyClass {
    MyClass() {
        // Initialize GLFW
        glfwSetKeyCallback(window, keyboardEventFunction);
    }
    // other content
}

void keyboardEventFunction(GLFWwindow *window, int b, int a, int m) {
     // I want to notify the MyClass object, but it's out of scope
}

我知道GLFW有一些非回调函数来检索输入数据,但如果我使用这些函数,就不能保证我不会因为我的程序没有在用户提供输入的确切时刻进行检查而遗漏某些内容。我也失去了检查窗口焦点和光标进入退出事件的能力。如何解决这个问题?

提示:MyClass的全局实例。(是的,它很难看——不幸的是,在我的理解中,它是用来使用库的)我希望有一种比引入全局变量更好的方法,但是你在做什么。为了解决过去类似的问题,我有一个全局映射变量,它接受指向GLFWwindow对象的指针并返回指向相应MyClass对象的指针。您可以使用
glfwSetWindowUserPointer
设置指向
MyClass
对象的(无效)指针。您可能需要使用一些
extern“C”
回调函数,这些函数使用
glfwGetWindowUserPointer
进行方法分派。