Хранение объектов boost :: function в контейнере
У меня есть векторKeyCallback
s:
typedef boost::function<void (const KeyEvent&)> KeyCallback
который я использую для хранения всех слушателей, когда нажата кнопка клавиатуры. Я могу добавить их и отправить события всем обратным вызовам сfor_each
, но я не знаю, как на самом деле стереть конкретныйKeyCallback
подпись от моего вектора.
Например, я хочу что-то вроде этого:
void InputManager::UnregisterCallback(KeyCallback callback) {
mKeyCallbacks.erase(std::find(mKeyCallbacks.begin(), mKeyCallbacks.end(), callback));
}
Согласно сboost::function
документация (см.Вот), не существует такой вещи, как сравнение функциональных объектов, которая могла бы объяснить мои проблемы с вышеизложенным. Так я застрял? Есть ли хороший способ обойти это?
(Я читал оboost::signals
для механизмов обратного вызова, но это, очевидно, довольно медленно, и я ожидаю, что обратные вызовы будут срабатывать, возможно, несколько раз за кадр.)