Speichern von boost :: function-Objekten in einem Container
Ich habe einen Vektor vonKeyCallback
s:
typedef boost::function<void (const KeyEvent&)> KeyCallback
Hiermit speichere ich alle Listener, für die eine Tastaturtaste gedrückt wird. Ich kann sie hinzufügen und die Ereignisse an alle Rückrufe mit versendenfor_each
, aber ich weiß nicht, wie man ein bestimmtes tatsächlich löschtKeyCallback
Unterschrift von meinem Vektor.
Zum Beispiel möchte ich so etwas:
void InputManager::UnregisterCallback(KeyCallback callback) {
mKeyCallbacks.erase(std::find(mKeyCallbacks.begin(), mKeyCallbacks.end(), callback));
}
Gemäßboost::function
Dokumentation (sieheHier) gibt es keinen Vergleich von Funktionsobjekten, der meine Probleme mit den oben genannten erklären würde. Also stecke ich fest? Gibt es einen schönen Weg, dies zu umgehen?
(Ich lese überboost::signals
für Rückrufmechanismen, aber es ist anscheinend ziemlich langsam, und ich erwarte, dass Rückrufe möglicherweise mehrmals pro Frame ausgelöst werden.)