Можно ли скопировать функцию в другую функцию, и если нет, то какие есть альтернативы?
У меня есть класс:
#include "list.h"
class Renderer{
public:
list<int> pressedButtons;
list<int> pressedKeys;
void (*updFunc)(list<int>, list<int>);
Renderer();
void setUpdateFunc(void (*f)(list<int>, list<int>)){
updFunc=f;
}
void run(){
while(1){
//Event polling
//window clear
updFunc(pressedKeys, pressedButtons);
//window update
}
}
};
По моей задумке, сначала создаётся пустая заготовка под функцию (updFunc) и в функции setUpdateFunc задаётся уже точное значение функции updFunc. При попытке это сделать выскакивает ошибка: Выражение должно быть допустимым для изменения левосторонним значением, я так понял что функция - это константа. Вопрос, как можно сделать что-то подобное?
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Посмотрите на этот код, может, станет понятнее?
void f1(int i) { cout << "f1(" << i << ")\n"; }
void f2(int i) { cout << "f2(" << i << ")\n"; }
struct Test
{
void (*free_fun)(int);
void (Test::*mem)(int);
void m1(int i){ cout << "m1(" << i << ")\n"; }
void m2(int i){ cout << "m2(" << i << ")\n"; }
};
int main(int argc, char * argv[])
{
Test t;
t.free_fun = f1;
t.free_fun(1);
t.free_fun = f2;
t.free_fun(2);
t.mem = &Test::m1;
(t.*t.mem)(3);
t.mem = &Test::m2;
(t.*t.mem)(4);
}