2016-08-03 13 views
1

나는 일반적인 EventEmitter 인스턴스를 사용하고은 어떻게 bind 함수의 두 번째 인수를 전달하는 방법?</p> <pre><code>EventEmitter mEventHandler; </code></pre> <p>이 그래서 정의한이 바인딩 :

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

on 같은 :이다

mEventHandler.emit(paramID, someInt, someDouble); 

"일반 "라고 말했고 2 개의 매개 변수를 설정했습니다.

void ILFO::SetMin(double min); 

어떻게 그냥 바인드에서 두 번째 있었던 파라미터를 전달할 것입니다 :하지만 내 특정 기능은 SetMin 단 하나의 PARAM (이 경우 someDouble을 것)가 필요? 쉽게

+0

당신은 추가 매개 변수를 전달할 수 있습니다. 그들은 조용히 무시 당한다. –

답변

2

이 문제에 대한 람다를 사용하는 나는 생각한다

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

당신은 내 하루를 만듭니다! 고마워요! – markzzz

0

대신 사용 std::bind의 람다 : std::bind의 목적은 당신이 원하는 것과 반대가

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

입니다 : 그것은 당신이 주어진 값으로 f 일부 인수를 고정 (또는으로 MM > N을 복용하는 기능 f에서 N 인수를 복용 함수를 작성 /과 ORD을 변경하는 데 도움이 어). 함수 객체가 바인드에서 반환에