例如,我有一个函数foo
:
int foo(int a, int b)
{
return a + b;
}
我可以定义一个函数指针:
int (*pfoo)(int, int);
但是我如何在程序中动态地执行此操作?
我想要一个函数,它接受一个函数作为参数,并返回一个函数指针,该函数指针接受与给定函数相同的参数和返回值。
然后我可以像这样使用它:
void* pfoo = getFuncPtrFromFunc(foo);
上面的代码做了什么。
这可能吗?
最佳答案
您不能在运行时(即动态地)执行此操作;请记住,所有类型(函数指针都是类型)都是在编译时静态确定的。
想象一下,如果您可以这样做,并且您以某种方式获得了一个类型为变量的函数指针(即它可以指向float (*)(int,int)
code> 或 char (*)(float)
)。您如何能够调用它并提供有意义的参数列表?
但是,您可以在编译时获取此信息;一种方法是使用 Boost TypeTraits library .
关于c++ - 如何定义一个函数指针,它采用与给定函数相同的参数和返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5685560/