Ich verwende private Vererbung in einem Projekt, in dem "implementiert in Bezug auf" -Sinn. Die Basisklasse definiert operator [], und das ist die Funktionalität, die ich verwenden möchte. Also ich habePrivate Vererbung mit Direktive, Überladungen?
class A : private B {
using B::operator[];
// ...
};
Wie aber kann ich kontrollieren, welche Version des Betreibers ich bekomme? Tatsächlich brauche ich mehr als eine, sowohl die const
als auch die nicht const
Versionen. Kann dies erreicht werden?
In diesem Fall könnten Sie Komposition verwenden, um das gewünschte Ergebnis anstelle der privaten Vererbung zu erhalten. – James
Ja, ich weiß ... Ich habe es stattdessen in private Vererbung geändert, um den Umfang des Weiterleitungscodes zu reduzieren. Also ist es nicht möglich? Wie wird die Funktion gewählt? – carlpett
Ihr Code wird viel einfacher zu schreiben und zu pflegen sein, wenn Sie hier Komposition statt privater Vererbung verwenden. Als Faustregel gilt, dass Sie C++ - Features nicht aus der Ferne verwenden sollten, wenn sie nicht absolut notwendig sind (aus dem, was Sie bisher gesagt haben, ist in diesem Fall keine private Vererbung erforderlich). –