Przechowywanie obiektów funkcji boost :: w kontenerze
Mam wektorKeyCallback
s:
typedef boost::function<void (const KeyEvent&)> KeyCallback
których używam do przechowywania wszystkich słuchaczy po naciśnięciu przycisku klawiatury. Mogę je dodawać i wysyłać zdarzenia do wszystkich wywołań zwrotnych za pomocąfor_each
, ale nie wiem, jak faktycznie usunąć konkretnyKeyCallback
podpis z mojego wektora.
Na przykład chcę coś takiego:
void InputManager::UnregisterCallback(KeyCallback callback) {
mKeyCallbacks.erase(std::find(mKeyCallbacks.begin(), mKeyCallbacks.end(), callback));
}
Wedługboost::function
dokumentacja (patrztutaj), nie ma czegoś takiego jak porównywanie obiektów funkcji, co wyjaśniałoby moje problemy z powyższym. Więc utknąłem? Czy jest jakiś miły sposób na to?
(Czytałem oboost::signals
dla mechanizmów zwrotnych, ale najwyraźniej jest dość powolny i oczekuję, że wywołania zwrotne będą uruchamiane prawdopodobnie kilka razy w ramce.)