DirectX9でコールバックイベントシステムを作成しようとしています。メソッド関数ポインターを使用して、マウスクリックのイベントをトリガーしようとしています。しかし、私はいくつかの問題を抱えています。私のゲームは、ゲーム状態マネージャーを使用してレンダリングを管理しています。私のゲームステートはすべて、基本クラスAbstractGameStateから派生しています。
この特定のメソッドを持つスプライトオブジェクトがあります:
m_NewGameSprite->OnClick(this, &MainMenuState::StartGame);
MainMenuStateは私のゲームが存在する現在のゲーム状態であり、StartGameはこのクラスのvoidメソッド部分です。ユーザーがクリックしたときに実行できるように、関数ポインターをスプライトクラス内の変数に格納したいと思います。
template <typename T>
void OnClick(GameState* LinkedState, void (T::*EventPointer)())
{
m_LinkedGameState = LinkedState;
m_EventPointer = EventPointer; // <- Doesnt compile
}
ポインタをダウンキャストしようとしましたが、実際には機能しませんでした。
私のスプライトクラスには、これら2つの変数も含まれています
void (GameState::*m_EventPointer)();
GameState* m_LinkedGameState;
どんな助けでもいただければ幸いです