我正在尝试在 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
}
我试过向下转换指针,但这并没有真正奏效。
我的精灵类也包含这两个变量
void (GameState::*m_EventPointer)();
GameState* m_LinkedGameState;
任何帮助,将不胜感激