在我将一些OpenGL代码从main函数移动到一个新类后,我在下一行出现了以下错误:
glutDisplayFunc(OnDisplay);
错误C3867:'Room :: OnDisplay':函数调用缺少参数列表;使用'& Room :: OnDisplay'创建指向成员的指针
我的错是什么?
答案 0 :(得分:4)
glutDisplayFunc
需要void (*func)(void)
,但您传递的是void (Room::*func)(void)
。
由于类方法接收隐式this
参数,因此它们的指针类型与常规函数指针根本不同。它们之间无法转换。
您所能做的就是让OnDisplay
成为Room
的静态成员。从那里你可以将调用转发给具体Room实例的成员函数(因为设计中只有一个过量显示回调,你从过程代码迁移,我假设你在某个地方只有一个Room
对象)。
答案 1 :(得分:2)
glutDisplayFunc
只是指向函数的指针。将OnDisplay
移至课程时,您还会在实际调用时将隐藏的参数this
传递给glutDisplayFunc
。
一种可能的解决方案是将OnDisplay
作为静态方法。