Здравствуйте, помогите разобраться с неработающим кодом.
/*
--------------------------------------------------------------------------------
File: Menu.h
Created by: Andrew Oleshkewich.
--------------------------------------------------------------------------------
*/
namespace LibraryTerminal
{
template< typename TItemType >
class Menu
{
typedef bool (TItemType::*funptr_t)();
std::vector<funptr_t> m_MenuFunct;
std::vector<char> m_MenuIndex;
Keyboard& m_Keyboard;
public:
Menu(Keyboard& InKeyboard);
void RegisterFunction(funptr_t InFun, char InIndex);
void Run();
}; // class Keyboard
/*
----------------------------------------------------------------------------
class Menu.
----------------------------------------------------------------------------
*/
template< typename TItemType >
Menu<TItemType>::Menu(Keyboard& InKeyboard)
: m_Keyboard(InKeyboard)
{}
template< typename TItemType >
void Menu<TItemType>::RegisterFunction(funptr_t InFun, char InIndex)
{
m_MenuFunct.push_back(InFun);
m_MenuIndex.push_back(InIndex);
}
template< typename TItemType >
void Menu<TItemType>::Run()
{
int Ch = m_Keyboard.GetChar();
for(size_t Index = 0; Index < m_MenuFunct.size(); ++Index)
{
if(Ch == m_MenuIndex[Index])
{
funptr_t fun = m_MenuFunct[Index];
// !!!!!!!!!!!!!!!!!!!! fun();
}
}
}
} // namespace LibraryTerminal
В выделеной строчке компилятор ругается:
1>c:\users\andrew\documents\visual studio 2010\projects\library\terminal\inc\menu.h(53): error C2064: результатом вычисления фрагмента не является функция, принимающая 0 аргументов
1> c:\users\andrew\documents\visual studio 2010\projects\library\terminal\inc\menu.h(44): при компиляции функции-члена "void LibraryTerminal::Menu<TItemType>::Run(void)" класса шаблон
1> with
1> [
1> TItemType=LibraryTerminal::Terminal
1> ]
Заранее спасибо.