如何定义一个函数指针,它接受与给定函数相同的参数和返回值
How can I define a function pointer that takes the same arguments and return value as a given function?
例如,我有一个函数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++是一种静态类型语言,不允许做你想做的事情。
相关文章:
- 程序不向函数返回值
- 如何将不可移动和不可复制的函数返回值获取到数组中
- 存储函数返回值或立即使用c++
- 如何删除新分配的字符,这也是函数返回值?
- 不从函数返回值会导致段错误
- lambda 函数返回值的有效性
- 如何获取有关 Visual Studio 代码分析中未经检查的函数返回值的警告
- 存储指向函数返回值的指针
- 在 OOP 中,调用函数返回值还是直接调用值更快?
- 函数返回值的自动类型扣除
- 为循环中多次调用的函数返回值预分配内存的正确方法是什么
- 函数返回值的位运算符提升
- 从捕获 constexpr 函数返回值的变量中删除 constexpr 会删除编译时计算
- C++ ReSharper - 生成函数返回值/参数类型的变量
- std::clamp - 检测函数返回值是否绑定到 const T&
- C 递归函数返回值
- 是否可以在C 中使回调函数返回值
- C++标准是否保证函数返回值具有常量地址?
- 将函数返回值传递给引用参数会导致 GCC 中的编译错误
- 函数返回值错误