如何从另一个函数指针设置函数指针
How to set a function pointer from another function pointer
我想做以下事情:
void *f1(int);
void *f2(int);
f1 = f2;
它说无法将 void*(int)
转换为 void*(int)
我基本上需要这个作为键盘处理程序。所有对象都指向主键盘处理程序函数指针地址,然后当其中一个被鼠标选中时将其设置为指向自己的键盘处理程序。
我想这样做是为了良好的代码设计原则并了解一般情况。
如果有任何方法允许对象设置键盘处理程序,请告诉我。可能有一些使用限制或动态多态性的技巧?
您已将 f1
和 f2
声明为采用 int
参数并返回 void*
的函数。当然,功能是不可分配的。
要将 f1
和 f2
声明为指向接受 int
参数并返回 void
的函数的指针,您需要使用括号:
void (*f1)(int);
void (*f2)(int);
C++ 方法是:
std::function<void(int)> f1;
std::function<void(int)> f2;
我想做以下事情:
void *f1(int);
void *f2(int);
f1 = f2;
它说无法将 void*(int)
转换为 void*(int)
我基本上需要这个作为键盘处理程序。所有对象都指向主键盘处理程序函数指针地址,然后当其中一个被鼠标选中时将其设置为指向自己的键盘处理程序。
我想这样做是为了良好的代码设计原则并了解一般情况。
如果有任何方法允许对象设置键盘处理程序,请告诉我。可能有一些使用限制或动态多态性的技巧?
您已将 f1
和 f2
声明为采用 int
参数并返回 void*
的函数。当然,功能是不可分配的。
要将 f1
和 f2
声明为指向接受 int
参数并返回 void
的函数的指针,您需要使用括号:
void (*f1)(int);
void (*f2)(int);
C++ 方法是:
std::function<void(int)> f1;
std::function<void(int)> f2;