为了保持它非常简单,我有一个传递void (*)(int,int,int)
的函数,我如何将其转换为参数?
示例:Function(void (*)(int,int,int) );
我希望在这里传递参数但是我不知道它们是什么
Function
的声明期望你传递给它一个自由函数的地址(即一个没有绑定到类的实例),它接受三个类型为int
的参数。你没有为Function
指定返回类型,所以在这个例子中,我假设它是void
。
#include <iostream>
void Function(void (*)(int, int, int));
void DoSomething(int a, int b, int c)
{
std::cout << "DoSomething called with a=" << a << " b=" << b << " c=" << c;
}
int main()
{
Function(DoSomething);
}
void Function(void (*callback)(int, int, int))
{
std::cout
<< "Function called. Now calling 'callback' at address "
<< callback
<< "n";
callback(1, 2, 3);
}
在这个例子中,main
通过传递函数DoSomething
的地址来调用Function
。Function
的实现然后调用传递给它的函数(命名为callback
),并传递3个参数1
,2
和3
。
结果如下
Function called. Now calling 'callback' at address 00511F55
DoSomething called with a=1 b=2 c=3
调用Function
不需要进行任何类型转换。如果你遇到一个错误,或者开始认为你应该执行强制转换来调用它,那么你就要做一些严重错误的事情了。
这是你要找的吗?
Function(static_cast<void (*)(int,int,int)>(fp))
你可能需要const_cast
或reinterpret_cast
,这取决于你要转换什么…