Ich arbeite an einer Klasse, die den Indexoperator überlädt ([]). Um die Zuweisung eines Elements zu ermöglichen, muss der Operator einen Verweis auf das Element zurückgeben. Beispiel:STL-Überlastvektorzuweisung
In dieser Situation kann der Clientcode die zurückgegebene Referenz verwenden, um einem Element einen Wert zuzuweisen. Ich möchte jedoch eine Möglichkeit haben, die tatsächliche Zuweisung des Elements abzufangen, so dass ich den zugewiesenen Wert verwenden kann, um eine interne Verwaltung durchzuführen. Gibt es eine relativ saubere und einfache Möglichkeit, dies zu tun, oder sollte ich nur einige Accessor-Funktionen erstellen, anstatt Operator Overloading zu verwenden?
Man würde fragen, warum Sie von 'std :: vector' erben. – PaulMcKenzie
Erben Sie nicht von Klassen, die keinen virtuellen Destruktor bereitstellen. Zumindest nicht so lange, wie du wirklich weißt, was du tust! –
Ich habe std :: vector verwendet, um das Beispiel etwas zu vereinfachen. Meine aktuelle Klasse verwendet eine Karte. Was ich versuche zu implementieren, ist ein Zwei-Wege-Mapping. Ich brauche einen effizienten Weg, um den Schlüssel nur mit dem Wert als Nachschlagen zu erhalten, ohne auf eine lineare Suche zurückgreifen zu müssen. Ich plane, einen anderen Vektor/Map zu verwenden, um eine umgekehrte Zuordnung beizubehalten, aber ich kann den zugewiesenen Wert nicht erfassen. An dieser Stelle scheint es, dass es besser wäre, nur einen Getter/Setter zu verwenden, als eine neue Klasse zu definieren, nur um die Zuweisung zu erfassen. Ein weiteres Problem mit dem Wrapping des Werts in einer Klasse wäre, dass es den Wert, aber nicht den Index erfassen würde. –