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

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
}


错误C3867

'violet::RambleController::scrollCallback': non-standard syntax; use '&' to create a pointer to member


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

glfwSetScrollCallback(window, &scrollCallback);//

Error C2276'&': illegal operation on bound member function expression


有谁知道如何解决这个问题。

最佳答案

scrollCallback是成员函数,因此您无法执行&scrollCallback并获得普通的函数指针。 (您可以使用&RambleController::scrollCallback获取成员函数指针,这对于glfwSetScrollCallback毫无用处)

确保您的scrollCallback函数是static或完全不在类之外。

关于c++ - glfwSetScrollCallback()编译失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51853062/

10-09 03:21