Передать функцию как аргумент, затем использовать как метод класса
Требуется передать функцию аргументом для другой функции, затем сделать переданную функцию методом класса. Пытался сделать примерно так:
class A{
public:
void setExDef(std::function<void()> *f){
exDef = f;
};
void executeDef(){
exDef();
};
private:
void *exDef;
};
Затем получил ошибку error: expression cannot be used as a function.
Надеюсь что пояснил понятно.
Ответы (1 шт):
Автор решения: Mikhailo
→ Ссылка
Похоже, вам надо
class A{
public:
void setExDef(std::function<void()> f){
exDef = std::move(f);
};
void executeDef(){
exDef();
};
private:
std::function<void()> exDef;
};
Ну, или
class A{
public:
void setExDef(void(*f)()){
exDef = f;
};
void executeDef(){
exDef();
};
private:
void (*exDef)();
};