Almacenando objetos boost :: function en un contenedor
Tengo un vector deKeyCallback
s:
typedef boost::function<void (const KeyEvent&)> KeyCallback
que utilizo para almacenar todos los oyentes cuando se presiona un botón del teclado. Puedo agregarlos y enviar los eventos a todas las devoluciones de llamada confor_each
, pero no sé cómo borrar realmente una específicaKeyCallback
firma de mi vector.
Por ejemplo quiero algo como esto:
void InputManager::UnregisterCallback(KeyCallback callback) {
mKeyCallbacks.erase(std::find(mKeyCallbacks.begin(), mKeyCallbacks.end(), callback));
}
De acuerdo aboost::function
documentación (veraquí), no existe tal cosa como comparar objetos de función, lo que explicaría mis problemas con lo anterior. Entonces, ¿estoy atascado? ¿Hay alguna manera agradable de evitar esto?
(Yo leo sobreboost::signals
para los mecanismos de devolución de llamada, pero al parecer es bastante lento, y espero que las devoluciones de llamada se activen posiblemente varias veces por trama.)