Я использую указатели на функции, хранящиеся в массиве с typedef, определяющим указатель, и я немного растерялся из-за того, как я должен вызывать функцию.
вот часть Menu.h:
typedef void( Menu::*FunctionPointer )();
FunctionPointer* m_funcPointers;
вот часть Menu.cpp:
Menu::Menu()
: m_running( true )
, m_frameChanged( true )
, m_currentButton( 0 )
, m_numOfButtons( k_maxButtons )
, m_menuButtons( new MenuButton[k_maxButtons] )
, m_nullBtn( new MenuButton( "null", Vector2( -1, -1 ) ) )
, m_frameTimer( 0 )
, m_funcPointers( new FunctionPointer[k_maxButtons])
{
m_timer.start();
clearButtons();
mainMenu();
}
void Menu::enterButton()
{
m_funcPointers[m_currentButton]();//Error here
}
void Menu::mainMenu()
{
m_funcPointers[0] = &Menu::btnPlay;
m_menuButtons[0] = MenuButton("Play", Vector2(0, 0));
m_funcPointers[1] = &Menu::btnHiScores;
m_menuButtons[1] = MenuButton("HiScores", Vector2(0, 1));
m_funcPointers[2] = &Menu::btnExit;
m_menuButtons[2] = MenuButton("Exit", Vector2(0, 2));
}
void Menu::btnPlay()
{
StandardGame* game = new StandardGame();
game->play();
delete game;
}
m_currentButton - целое число, используемое в качестве индекса.Я не уверен, как на самом деле вызвать функцию, так как приведенная выше строка выдаёт мне эту ошибку:
**C2064 term does not evaluate to a function taking 0 arguments**
, а Visual Studio выдаст мне следующее:
expression preceding parentheses of apparent call must have (pointer-to-) function type
Я не знаюкак решить вышеуказанную проблему и связано ли это с тем, как я вызываю функцию или как я ее храню.Заранее спасибо.