Elegante Lösung zum Duplizieren von Gettern für konstante und nicht konstante Objekte
Beim Umgang mit Gettern in C stehen Entwickler oft vor dem Dilemma, sie zu haben um separate Implementierungen für konstante und nicht konstante Versionen zu erstellen. Dies kann unpraktisch sein, wenn die Logik für beide Getter weitgehend ähnlich ist.
Eine mögliche Lösung für dieses Problem besteht darin, die Nicht-Konstanten-Version zu implementieren, indem die Konstante aus der Konstanten-Version entfernt wird. Dieser Ansatz gilt als sicher, da die aufrufende Funktion nicht konstant ist, was bedeutet, dass das Objekt selbst nicht konstant ist, was die Konvertierung ermöglicht.
Zum Beispiel:
class Foo { public: const int& get() const { //non-trivial work return foo; } int& get() { return const_cast<int&>(const_cast<const Foo*>(this)->get()); } };
Dieser Ansatz mag ästhetisch nicht ansprechend sein, garantiert aber Sicherheit und macht in vielen Fällen separate Implementierungen überflüssig. Es ermöglicht Entwicklern, sich auf die Kernfunktionalität der Getter zu konzentrieren, anstatt Code zu duplizieren.
Das obige ist der detaillierte Inhalt vonWie kann ich doppelte Getter für Const- und Non-Const-Mitgliedsfunktionen in C vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!