現在我正在寫一個帶有opengl的MFC程序。當我試圖OpenGL的與MFC結合起來,我遇到了一些問題: 首先,我定義的類名爲:CSCommTestDlg,並與規範中定義的成員函數如下:如何指向C++中全局函數中的成員函數?
void CSCommTestDlg::OpglMain(int argc, char* argv[])
{
glutDisplayFunc(displayCude);
}
displayCube也是類CSCommTestDlg和glutDisplayFunc的成員函數是一個全球性的funcion(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'](http://en.cppreference.com/w/cpp/utility/functional/mem_fn)? – 2011-12-19 09:03:55
我個人會使用glut以外的庫,或者用一堆靜態函數(回調函數)來創建一個框架,該函數擁有某些類型的具有與這些回調函數調用相匹配的Game對象。所以存在一種貪婪和遊戲之間的界面。 (我想我假設你正在寫一個遊戲哈哈) – 2011-12-19 09:04:40
@JoachimPileborg:這將如何幫助提問者? – 2011-12-19 11:29:29