2016-08-03 32 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呃争论)。

相关问题