如何从另一个函数指针设置函数指针

How to set a function pointer from another function pointer

我想做以下事情:

void *f1(int);
void *f2(int);

f1 = f2;

它说无法将 void*(int) 转换为 void*(int)

我基本上需要这个作为键盘处理程序。所有对象都指向主键盘处理程序函数指针地址,然后当其中一个被鼠标选中时将其设置为指向自己的键盘处理程序。

我想这样做是为了良好的代码设计原则并了解一般情况。

如果有任何方法允许对象设置键盘处理程序,请告诉我。可能有一些使用限制或动态多态性的技巧?

您已将 f1f2 声明为采用 int 参数并返回 void* 的函数。当然,功能是不可分配的。

要将 f1f2 声明为指向接受 int 参数并返回 void 的函数的指针,您需要使用括号:

void (*f1)(int);
void (*f2)(int);

C++ 方法是:

std::function<void(int)> f1;
std::function<void(int)> f2;