Ich habe eine Schnittstelle, die Bündel von Const-Methoden hat. In einer der Implementierung der Schnittstelle muss ich die angeforderten Informationen aus einer Datei lesen. Wie zum Beispiel here gezeigt wurde, handelt es sich tatsächlich NICHT um eine const-Operation, da sich das Dateihandle beim Lesen ändert.Implementieren von Const-Methoden einer Schnittstelle und Lesen von Dateien
Grundsätzlich gibt es drei Möglichkeiten, um dies zu realisieren Ich bin mir dessen bewusst:
1) Verwenden Sie temporäre Datei-Handle bei jeder Anfrage.
2) Verwenden Sie PIMPL.
3) Verwenden Sie mutable
auf dem Dateihandle.
Die erste Option ist offensichtlich ein Overkill und mit vielen Anfragen fügt viel Overhead hinzu. Die zweite Option fügt Indirection hinzu, scheint aber eine ziemlich Standardlösung zu sein. Die dritte Option hat jedoch keinen Overhead und keine Indirektion, sondern ist im Grunde ein Blankoscheck für Änderungen. Andererseits, obwohl das PIMPL-Idiom das Gleiche nur in einer mehr verschachtelten, aber wohl kontrollierteren Art und Weise tut.
Was wäre die richtige/bevorzugte Art, das Lesen von Dateien in einer const-Methode ohne Vorbehalt der const-Korrektheit durchzuführen?
(3) Ja wenn das Dateihandle NICHT Teil des beobachtbaren Zustands des Objekts ist. –
@RichardCritten Das ist der knifflige Teil, nicht wahr? Das Datei-Handle ist nicht Teil der Schnittstelle, es kann auch nicht direkt referenziert werden, aber sobald es veränderbar ist, kann es beispielsweise auch in const-Methoden in die Datei geschrieben werden und das wäre (über konstante Methoden der Schnittstelle) von außen beobachtbar. – Resurrection