Я получаю следующую ошибку компилятора, когда я использовал указатель нестатической функции в аргументе конструктора в методе myclass_2, void load (void).C++, Передача нестатического указателя функции в конструкторе класса
Ссылка на не-статической функции члена должна быть вызвана
Если изменить функцию статической силы нагрузки (пустот) без ошибок. но мне нужна нестатическая функция, мне нужно работать с некоторой глобальной переменной в функции загрузки. Любая помощь была бы оценена.
class myclass{
public:
//_load_event_handler
vector<Function> _handler_one;
vector<Function> _handler_two;
vector<Function> _handler_three;
void register_for_load_event(void(*fun)(void)){
this->_handler_three.push_back(fun);
}
void register_for_dowork_event(void(*fun)(void)){
this->_handler_one.push_back(fun);
}
void register_for_end_event(void(*fun)(void)){
this->_handler_two.push_back(fun);
}
void run (char **fileNames)
{
for (int i = 0; i< _handler_one.size();i++)
_handler_one[i]();
for (int i = 0; i< _handler_two.size();i++)
_handler_two[i]();
for (int i = 0; i< _handler_three.size();i++)
_handler_three[i]();
}
};
class myclass_2
{
public:
myclass *ptrmyclass;
void load(void)
{
cout << "load function start" << endl;
//some code here
}
myclass_2(myclass *_ptrmyclass)
{
ptrmyclass = _ptrmyclass;
ptrmyclass->register_for_load_event(load);
}
void foo(vector<string> vect)
{
cout<< "is stop word called" << endl;
}
};
'недействительным (* весело) (аннулируются)' не является указателем на функцию члена, так что он может связываться только свободных функций или статических членов. Вместо этого попробуйте использовать 'std :: function'. –
user657267
Можете ли вы, пожалуйста, сжать свой пример так, чтобы у нас был http://sscce.org/ – Klaus