[英]How do I cast to a void (*)(int,int,int) in 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
的地址来调用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
,具体取决于您要投射的内容...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.