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

时间:2011-04-16 09:29:47

标签: c++ c function-pointers

例如,我有一个函数foo

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

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

int (*pfoo)(int, int);

但是如何在程序中动态执行此操作? 我想要一个函数,它接受一个函数作为参数,并返回一个函数指针,它接受相同的参数并返回给定函数的值。
然后我可以像这样使用它:

void* pfoo = getFuncPtrFromFunc(foo);  

上面的代码做了什么。

这可能吗?

2 个答案:

答案 0 :(得分:5)

您不能在运行时(即动态)执行此操作;请记住,所有类型(和函数指针都是类型)都是在编译时静态确定的。

想象一下,如果你可以这样做,并且你以某种方式获得了一个类型可变的函数指针(即它可以指向float (*)(int,int)char (*)(float))。您如何能够调用它并提供有意义的参数列表?

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

答案 1 :(得分:0)

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