[英]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.