Когда вы не можете вспомнить синтаксис для функций std::bind
, иногда проще написать функтор, который просто перенаправляет функцию-член:
struct PushInstruction {
PushInstruction(Chipset& self) : self(self) {}
void operator()(instructionList* instruction) {
self.pushInstruction(instruction);
}
Chipset& self;
};
std::for_each(_instructList.begin(), _instructList.end(), PushInstruction(*this));
Немного объяснений:
Я определяю класс, который в своем конструкторе принимает объект, который мы хотим вызвать pushInstruction
, и в котором хранится ссылка на объект.
Затем я определяю operator()
, который берет инструкцию, которую вы хотите нажать, и вызывает pushInstruction
.
В цикле for_each
я просто передаю this
своему конструктору, создавая экземпляр функтора, который передается в for_each
, который затем вызывает operator()
для каждого элемента.