2014-01-22 55 views
0

如何在C++中實現以下JavaScript回調函數?以下內容來自JavaScript片段。我想實現相同的功能:帶參數的JavaScript和C++回調函數

var playAdBreak = function(adbreak, callback) 
{ 
    var x; 
    playSingle(x, function() { playAdBreak.call(this, adbreak, callback); }); 
}; 

var playSingle = function(abc, callback) 
{ 

}; 

回答

1

如果你是C++ 11環境下,你可以使用拉姆達,std::function。下面的代碼沒有相同的功能,但它可以轉換成下面的樣子,除了:C++ lambda沒有關閉,並且沒有this函數。

auto playSingle = [&](const T &abc, std::function<void()> callback) { 

} 

auto playAdBreak = [&](const Y &adbreak, std::function<void()) callback) { 
    T x; 
    playSingle(x, [=]() { playAdBreak(adbreak, callback); }); 
} 
+0

太感謝你了!但是,你有什麼機會知道實現這個的另一種方式嗎?我遇到的麻煩是將參數傳入playAdBreak(adbreak,callback)作爲回調函數的一部分 – codeshark

1

做它的溫和的方式,我能想到的是

void callBackDefinition() 
{ 
    printf("I was called"); 
} 

void callBackExecutor(void (*callBack)) 
{ 
    callBack(); 
} 

main() 
{ 
    callBackExecutor(&callBackDefinition); 
    return 0; 
} 
+0

感謝您的回答。我實際遇到的麻煩是將參數傳入playAdBreak(adbreak,callback)作爲回調函數的一部分。仍然試圖弄清楚... – codeshark