Как передать только второй аргумент функции привязки?

Я использую общий 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);

Как бы вы просто пропустили второй параметр из привязки?

1

Решение

Проще использовать лямбду для вашей проблемы, я думаю:

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

Другие решения

Используйте лямбду вместо std::bind:

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

Цель std::bind противоположность того, что вы хотите сделать: это помогает вам создать функцию, принимающую N аргументы из функции f принятие M где M > N фиксируя некоторые аргументы f для заданных значений (или / и изменить порядок аргументов).

0

По вопросам рекламы [email protected]