2016-08-03 79 views
1

我使用的是通用的EventEmitter實例:如何僅傳遞一個綁定函數的第二個參數?

EventEmitter mEventHandler; 

所以我定義這個綁定:

function<void(int, double)> onSetMin = bind(&ILFO::SetMin, this, placeholders::_2); 
mEventHandler.on(kParamID, onSetMin); 

on如:

mEventHandler.emit(paramID, someInt, someDouble); 

這是「通用「如上所述,並設置2個參數。但我的特異功能SetMin只需要一個參數(這將是someDouble在這種情況下):

void ILFO::SetMin(double min); 

你會如何剛剛從綁定通過第二放慢參數?

+0

您可以將額外的參數傳遞給從bind返回的函數對象。他們默默無視。 –

回答

2

更容易使用lambda您的問題,我認爲:

function<void(int, double)> onSetMin = [this](int dummy, double d) { SetMin(d); }; 
mEventHandler.on(kParamID, onSetMin); 
+0

你讓我的一天!非常感謝你! – markzzz

0

使用lambda代替std::bind

mEventHandler.on(kParamID, [this] (int, double value) { 
    SetMin(value); 
}); 

std::bind目的是你想要做的正好相反:它可以幫助你創建一個功能N參數從功能fM其中M > N通過固定一些參數f給定值(或/和更改ord呃爭論)。

相關問題