Я использую общий 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);
Как бы вы просто пропустили второй параметр из привязки?
Проще использовать лямбду для вашей проблемы, я думаю:
function<void(int, double)> onSetMin = [this](int dummy, double d) { SetMin(d); };
mEventHandler.on(kParamID, onSetMin);
Используйте лямбду вместо std::bind
:
mEventHandler.on(kParamID, [this] (int, double value) {
SetMin(value);
});
Цель std::bind
противоположность того, что вы хотите сделать: это помогает вам создать функцию, принимающую N
аргументы из функции f
принятие M
где M > N
фиксируя некоторые аргументы f
для заданных значений (или / и изменить порядок аргументов).