我想写一个初始化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);任.有什么问题?
你错了一个右括号:
void OpenGL::run(void (*drawFunction)()) {
Run Code Online (Sandbox Code Playgroud)
然后函数指针就像任何其他指针一样,你只需按值传递它们.你已经正确地做到了:glutDisplayFunc(drawFunction);
该文档glutDisplayFunc还显示了回调的原型:http://www.opengl.org/resources/libraries/glut/spec3/node46.html