glfwSetScrollCallback()编译失败

Y.L*_*Lex 0 c++ opengl glfw

我想为我的应用程序设置一个鼠标滚动回调,但总是有一个错误.这是一个代码片段:

void RambleController::scrollCallback(GLFWwindow *window, double xoffset, double yoffset)
{
    _owner->move(_owner->getForward() * (float)yoffset * _zoomSpeed);
}

RambleController::RambleController(float moveSpeed, float lookAroundSpeed, float zoomSpeed, float slideAroundSpeed)
    :_moveSpeed{ moveSpeed }, _lookAroundSpeed{ lookAroundSpeed },
    _zoomSpeed{ zoomSpeed }, _slideAroundSpeed{ slideAroundSpeed } {
    glfwSetScrollCallback(window, scrollCallback);//Error here
}
Run Code Online (Sandbox Code Playgroud)

错误C3867

'violet::RambleController::scrollCallback': non-standard syntax; use '&' to create a pointer to member
Run Code Online (Sandbox Code Playgroud)

在我添加&参数之后,还有其他错误,例如:

glfwSetScrollCallback(window, &scrollCallback);//

Error C2276'&': illegal operation on bound member function expression
Run Code Online (Sandbox Code Playgroud)

任何人都知道如何解决这个问题?

use*_*751 5

scrollCallback是一个成员函数,所以你不能做&scrollCallback一个正常的函数指针.(你可以&RambleController::scrollCallback用来获取一个成员函数指针,这对于没用glfwSetScrollCallback)

确保您的scrollCallback功能完全是static在课堂之外.