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

时间:2013-09-27 20:28:39

标签: c++ opengl

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

的参数
void OpenGL::run(void(*drawFunction())) {
    this->init();
    glutDisplayFunc(drawFunction);
    glutMainLoop();
};

但我收到了错误argument of void type *(*)() is incompatible with parameter of type void (*)()

它也不起作用glutDisplayFunc(&drawFunction);glutDisplayFunc(*drawFunction);。 有什么问题?

1 个答案:

答案 0 :(得分:5)

你错了一个右括号:

void OpenGL::run(void (*drawFunction)()) {

函数指针就像任何其他指针一样,只需按值传递它们。你已经这样做了:glutDisplayFunc(drawFunction);

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