簡體   English   中英

可以使用std :: bind1st將void(*)(void *,int)轉換為void(*)(int)嗎?

[英]Can std::bind1st be used to convert void (*)(void*,int) to void (*)(int)?

我有一個函數void f (void*, int); ,用作回調函數。 調用者期望void (*)(int) 我可以使用std::bind1st將一個轉換為另一個嗎? 有沒有辦法在不使用C ++ 11 std::bind情況下執行此操作,只需要std::bind1st

std::bind1st() 。雖然std::bind1st()使用調用操作符take和int創建一個函數對象,但它不是 void(*)(int) void(*)(void*, int)轉換為void(*)(int)的唯一方法是使用轉發函數從全局資源中獲取void* ,例如,

static void* data = 0; // probably needs to be set to a more suitable value
void f_forward(int value) {
    f(data, value);
}

任何提供不采用用戶定義的上下文的回調的人,例如,在類似C的界面中,只是通過的void* ,並沒有想到界面太難。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM