2014-04-09 259 views
1

是否有一種方法可以將函數傳遞給另一個函數,其中傳遞的函數將在第二個函數中使用傳遞參數時調用。但是,傳遞的函數可以有不同的參數。將函數的參數傳遞給另一個函數

我不想用調用函數內部的數據運行函數,只是調用實際調用函數時傳遞的參數。基本上定期檢查以確定是否可以繼續。

什麼,我試圖做一個例子:

bool CheckSomething1 (int a, int b) { /* some code */ } 
bool CheckSomething2 (int a, int b, int c) { /* some code */ } 

bool WaitForTrue (something funct something..) 
{ 
    while (! funct) { 
     /* do some work */ 
    } 
} 

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    WaitForTrue(CheckSomething1(1, 2)); 

    WaitForTrue(CheckSomething2(1, 2, 3)); 

    return 0; 
} 

編輯:基本上我正在尋找一種方式來傳遞一個函數用不同數量的參數,可以是不同類型的另一個功能並運行它,但每次傳遞它們時調用的參數都可能不同,但在傳遞它的函數中保持不變。

+0

我想你可以找到一些靈感[這裏](http://stackoverflow.com/questions/9410/how-do-you-pass-a-function-as-a-parameter-in-c?rq= 1)。順便說一下,你爲什麼試圖這樣做?在WaitForTrue中調用函數CheckSomething是否簡單? – Emi987

+0

有沒有聽說過[函數指針](http://en.wikipedia.org/wiki/Function_pointer#Example_in_C)? – CinCout

+0

基本上我需要建立一個系統,調用第三方DLL中的函數,但如果它們返回故障(串行總線+電機控制),我需要重試幾次。所以我想有一個功能,我可以打電話給那些第三方功能,重試幾次,然後再返回失敗。圍繞每個調用構建重試代碼可能會使我的代碼大三倍並且無法讀取。 –

回答

0

您要找的是std::bind

查看上面的鏈接,瞭解它是如何工作的簡要示例。

通過currying,您可以實現這種控制風格的另一種方式(在函數式編程中已經很流行),儘管在C++中它不是那麼容易表達的。

+0

謝謝,這正是我一直在尋找:) –

相關問題