今私はそれにOpenGLのMFCプログラムを書いています。そして、私はMFCとOpenGLを組み合わせしようとしたとき、私はいくつかの問題に遭遇: まず、私は名前のクラスに定義: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のパラメータは関数ポインタであります、そして私はメンバーfunctioを指摘しました
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
iは、グローバル関数でメンバ関数を指すことができないようですが、私はそれを必要とする:nは違法と思われるdisplayCube、と私はそのようなエラーが発生しました。それを修正するには?
['mem_fn'](http://en.cppreference.com/w/cpp/utility/functional/mem_fn)はどうですか? –
私は個人的にglut以外のライブラリを使用するか、それらのコールバックに一致する関数呼び出しを持つ何らかの種類のGameオブジェクトを所有する静的関数(コールバック)を持つフレームワークを作成します。だから、glutとあなたのゲームとの間のインターフェースの一種。 (私はあなたがゲームのハハを書いているという前提を作ったと思う) –
@JoachimPileborg:それはどのように質問者を助けるだろうか? –