2017-05-17 4 views
0

私はC++でGLFWと彼のコールバック関数を使っていました。 私がコールバック関数で達成したいのは、私のクラスの型の変数を変更することですKeyboardコールバック関数のGLFWがより多くの引数を渡しました

コールバック関数は、私がKeyboardキャプチャラムダ関数を渡すことはできません

glfwSetKeyCallback(GLFWwindow *window, GLFWkeyfun cbfun)タイプvoid(* GLFWkeyfun) (GLFWwindow *, int, int, int, int)でなければなりません。

テンプレート化された関数で動作しますが、Keyboardがコンパイル時に定義されなければならないため、オブジェクト指向のコードになりません(つまり、新しいウィンドウを新しいインスタンスを作るのは簡単です)。

私はKeyboardが含まれている派生オブジェクトを、置くことができるように、私は、コールバックの第一引数から同じオブジェクトを取得することができるように、私はglfwSetKeyCallbackの最初の引数として、多型を使用することができるようにGLFWwindowを拡張しようとしました関数。しかし、私がGLFWwindowを延長すると、IDEは "不完全な型は許可されていません"と伝えます

私はKeyboardをコールバックから変更できますか?私は本当に私のデザインを可能な限りモジュール化したいと思っています。

答えて

0

もう少し詳しく調べておくべきです。 KeyboardglfwSetWindowUserPointerに置き、glfwGetWindowUserPointerを使用してコールバックから取得できます。

関連する問題