glfw非标准语法;使用'&'创建指向成员的指针

时间:2017-12-02 08:08:59

标签: c++ glfw

我一直在./

我不知道为什么它不起作用。

如果Resize功能是全局的

,它会起作用

最小例子:

non-standard syntax; use '&' to create a pointer to member

最初的问题得到了解决,使用静态作为函数,但这在我想要做的事情中创造了不同的错误是问题的简化问题:

#include <GLFW/glfw3.h>
class test {
public:
    test(){}
    ~test(){}
    void resize(GLFWwindow* window, int new_width, int new_height) {}
}resizer;

int main(){
    auto newwindow = glfwCreateWindow(1, 1, "test", NULL, NULL);
    glfwSetWindowSizeCallback(newwindow, resizer.resize);

   return 0;
}

1 个答案:

答案 0 :(得分:0)

您的函数指针与传递到glfwSetWindowSizeCallback()所需的声明不匹配。

它必须是static函数,并且需要正确应用范围运算符::

#include <GLFW/glfw3.h>
class test {
public:
    test(){}
    ~test(){}
    static void resize(GLFWwindow* window, int new_width, int new_height) {}
 // ^^^^^^
}  /*resizer*/;
// ^^^^^^^^^^^ No need for this.

int main(){
    auto newwindow = glfwCreateWindow(1, 1, "test", NULL, NULL);
    glfwSetWindowSizeCallback(newwindow, test::resize);

   return 0;
}