Angenommen, ich habe eine Typhierarchie:
%Vor% Jedes Di hat sein eigenes operator==
definiert:
Ich möchte nun das B operator==
so definieren, dass:
Was ist der beste Weg, dies zu organisieren oder dies zu schreiben?
(Das Endziel ist, dass ich die Standard-Containertypen mit einem Werttyp von B * verwenden möchte (zB std::set<B*>
), aber dafür die benutzerdefinierte Di::operator==s
verwenden soll, wenn sie aus derselben abgeleiteten Klasse stammen)
Definieren Sie eine geschützte virtuelle Funktion in der Basisklasse. Machen Sie es rein virtuell, um sicherzustellen, dass jede Unterklasse Di
eine Implementierung bereitstellt. Die Funktion kennt das Ziel der Besetzung, da sie zu Di
gehört. Rufen Sie diese Funktion vom Operator ==
in der Basisklasse auf und lassen Sie den Vergleich folgendermaßen ablaufen:
Der Effekt dieses Konstrukts macht die Implementierung des Operators ==
virtuell.
Hier eine kleine Variation von dasblinkenlight Lösung mit zusätzlichen Funktionen (z. B. weniger Code-Duplizierung)
%Vor%