【发布时间】:2011-12-19 08:52:45
【问题描述】:
现在我正在编写一个带有 opengl 的 MFC 程序。当我尝试将 opengl 与 MFC 结合使用时,我遇到了一些问题: 首先,我定义了一个类:CSCommTestDlg,并定义了一个成员函数,代码如下:
void CSCommTestDlg::OpglMain(int argc, char* argv[])
{
glutDisplayFunc(displayCude);
}
displayCube也是CSCommTestDlg类的成员函数,glutDisplayFunc是一个全局函数(一个opengl函数),glutDisplayFunc的函数声明如下:
GLUTAPI void APIENTRY glutDisplayFunc(void (GLUTCALLBACK *func)(void));
是的,正如你所看到的,glutDisplayFunc的参数是一个函数指针,我让它指向一个成员函数displayCube,这似乎是非法的,我得到了这样的错误:
error C2664: 'glutDisplayFunc' : cannot convert parameter 1 from 'void (void)' to 'void (__cdecl *)(void)'
None of the functions with this name in scope match the target type
似乎我不能指向全局函数中的成员函数,但我需要它。如何解决?
【问题讨论】:
-
mem_fn怎么样? -
我个人会使用 glut 以外的库,或者创建一个包含一堆静态函数(回调)的框架,该框架拥有某种游戏对象,该对象具有与这些回调匹配的函数调用。所以是一种过剩和你的游戏之间的接口。 (我猜我假设你在写游戏哈哈)
-
@JoachimPileborg:这对提问者有什么帮助?