2016-08-03 17 views
1

私は一般的なEventEmitterインスタンスを使用しています:バインド関数の第2引数のみを渡す方法は?

EventEmitter mEventHandler; 

をだから私はこのバインドを定義した:

「一般的である
mEventHandler.emit(paramID, someInt, someDouble); 

次のような

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

on "と言って、2つのパラメータを設定します。

void ILFO::SetMin(double min); 

どのようにあなただけのバインドから2番目PARAMTERを渡します。しかし、私の特定の機能SetMinはただ一つのparam(この場合はsomeDoubleだろう)が必要ですか?

+0

追加のパラメータをbindから返された関数オブジェクトに渡すことができます。彼らは静かに無視されます。 –

答えて

2

私が思うあなたの問題のためのラムダを使用する方が簡単:代わりにstd::bindのラムダを使用し

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

あなたは私の一日を作る!どうもありがとうございました! – markzzz

0

を:

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

std::bindの目的は、あなたが何をしたいの反対であります:これは、関数fからのN引数を取る関数を作成するのに役立ちます。ここでは、fのいくつかの引数を固定して、M > Nの引数を固定します(または/またはordをそれらの引数の)。

関連する問題