如何定义一个带有相同参数并返回值作为给定函数的函数指针?

won*_*ng2 2 c c++ function-pointers

例如,我有一个功能foo:

int foo(int a, int b)
{
    return a + b;
}
Run Code Online (Sandbox Code Playgroud)

我可以定义一个函数指针:

int (*pfoo)(int, int);
Run Code Online (Sandbox Code Playgroud)

但是我怎么能在程序中动态地做到这一点?
我想要一个函数,它接受一个函数作为参数,并返回一个函数指针,它接受相同的参数并返回给定函数的值.
然后我可以像这样使用它:

void* pfoo = getFuncPtrFromFunc(foo);  
Run Code Online (Sandbox Code Playgroud)

上面的代码做了什么.

这可能吗?

Oli*_*rth 5

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

想象一下,如果你做到这一点,并以某种方式获得了一个函数指针,其类型是可变的(即它可以指向a float (*)(int,int)或a char (*)(float)).你怎么能够调用它并提供有意义的参数列表?

但是,您可以在编译时获取此信息; 一种方法是使用Boost TypeTraits库.