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)
上面的代码做了什么.
这可能吗?
你不能在运行时(即动态)这样做; 请记住,所有类型(和函数指针都是类型)在编译时是静态确定的.
想象一下,如果你能做到这一点,并以某种方式获得了一个函数指针,其类型是可变的(即它可以指向a float (*)(int,int)或a char (*)(float)).你怎么能够调用它并提供有意义的参数列表?
但是,您可以在编译时获取此信息; 一种方法是使用Boost TypeTraits库.
| 归档时间: |
|
| 查看次数: |
381 次 |
| 最近记录: |