Я пытаюсь написать систему событий обратного вызова в 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;
Буду признателен за любую помощь