如何定义一个函数指针,它接受与给定函数相同的参数和返回值

How can I define a function pointer that takes the same arguments and return value as a given function?

本文关键字:函数 返回值 参数 定义 何定义 一个 指针      更新时间:2023-10-16

例如,我有一个函数foo:

int foo(int a, int b)
{
    return a + b;
}

可以定义一个函数指针:

int (*pfoo)(int, int);

但是我如何在程序中动态地做到这一点呢?
我想要一个函数,它接受一个函数作为形参,并返回一个函数指针,该指针接受与给定函数相同的参数和返回值。
然后我可以这样使用:

void* pfoo = getFuncPtrFromFunc(foo);  

执行上面代码的操作。

这可能吗?

你不能在运行时(即动态地)这样做;请记住,所有类型(函数指针也是类型)都是在编译时静态确定的。

想象一下,如果你可以做到这一点,并且你以某种方式获得了一个类型为变量的函数指针(即它可以指向float (*)(int,int)char (*)(float))。如何调用它并提供有意义的参数列表呢?但是,您可以在编译时处获得此信息;一种方法是使用Boost TypeTraits库。

c++是一种静态类型语言,不允许做你想做的事情。