c++ - 如何定义一个函数指针,它采用与给定函数相同的参数和返回值?

标签 c++ c function-pointers

例如,我有一个函数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/

相关文章:

c++ - 我应该对临时内联变量使用++ 运算符吗?

c++ - 在端口 587 (TLS) 上使用 CDO 发送电子邮件时出错

C 程序 time_t 和 struct tm,结果相同?

更改大型二进制文件中的特定位

c++ - 使用函数指针的 STL 映射

c++ - 为每个变量创建一个新的 typedef 有什么意义?

由 小码哥发布于 2019-11-17 20:00:06 c++d3dchromiumembedded

c - 在 C 中创建新文件时出现段错误

c++ - 如何在 cupsEnumDests 中使用类方法?

c++ - 函数模板调用中的<未解析的重载函数类型>