У меня есть класс с именем DrawerApp
, содержащими функции _genericLoadFromFile
, Run
передавая функции другой функции в пределах того же класса
Я хочу назвать каждый из функций _loadFromFileHelper
, _loadFromBinHelper
из функции Run
ниже:
void DrawerApp::Run()
{
_genericLoadFromFile(_loadFromFileHelper);
_genericLoadFromFile(_loadFromBinHelper);
}
И _genericLoadFromFile
выглядит следующим образом:
bool DrawerApp::_genericLoadFromFile(static bool (DrawerApp::*helperFunc)(string))
{
/* do some stuff */
string fileName = 'Test';
success = (this->*helperFunc)(fileName);
}
, но, к сожалению, я получаю следующее сообщение об ошибке:
DrawerApp::_loadFromFileHelper': function call missing argument list;
use '&DrawerApp::_loadFromFileHelper' to create a pointer to member
А также это предупреждение:
Warning 1 warning C4042: 'helperFunc' : has bad storage class
Как выполнить это правильно? Я не понимаю, что я делаю неправильно. Спасибо
Редактировать
Когда я пытаюсь изменить его, как ошибка предлагает &DrawerApp::_loadFromFileHelper
я получаю еще ошибки:
Error 2 error LNK2019: unresolved external symbol "private: bool __thiscall DrawerApp::_loadFromFileHelper(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" ([email protected]@@[email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@Z) referenced in function "private: void __thiscall DrawerApp::Run(void)" ([email protected]@@AAEXXZ)
И
Error 3 error LNK1120: 1 unresolved externals
Вместо этого используйте статический полиморфизм (шаблоны) или простой старый полиморфизм. – Bathsheba
Можете ли вы привести пример для последнего? –
Это первая ошибка, действительно, ошибка компоновщика? Это больше похоже на ошибку компилятора. – razeh