如何在c++中转换为void (*)(int,int,int) ?

  • 本文关键字:int void c++ 转换 c++
  • 更新时间 :
  • 英文 :


为了保持它非常简单,我有一个传递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的地址来调用FunctionFunction的实现然后调用传递给它的函数(命名为callback),并传递3个参数1,23

结果如下

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_castreinterpret_cast,这取决于你要转换什么…

相关内容

最新更新