将函数作为参数传递给方法

lap*_*ots 0 c++ opengl

我想写一个初始化openGL的简单类.我决定创建一个run初始化opengl,glutDisplayFunc,glutMainLoop的方法.我想将draw函数传递给此方法并将其用作参数glutDisplayFunc

void OpenGL::run(void(*drawFunction())) {
    this->init();
    glutDisplayFunc(drawFunction);
    glutMainLoop();
};
Run Code Online (Sandbox Code Playgroud)

但我有一个错误argument of void type *(*)() is incompatible with parameter of type void (*)().

它不工作glutDisplayFunc(&drawFunction);,并glutDisplayFunc(*drawFunction);任.有什么问题?

Ada*_*dam 5

你错了一个右括号:

void OpenGL::run(void (*drawFunction)()) {
Run Code Online (Sandbox Code Playgroud)

然后函数指针就像任何其他指针一样,你只需按值传递它们.你已经正确地做到了:glutDisplayFunc(drawFunction);

该文档glutDisplayFunc还显示了回调的原型:http://www.opengl.org/resources/libraries/glut/spec3/node46.html