44 Stimmen

Private Daten von Mitgliedern verstecken? (C++)

Gibt es eine Möglichkeit, private Datenelemente einer C++-Klasse vor ihren Benutzern in der cpp-Datei zu verbergen? Ich betrachte die privaten Mitglieder als Teil der Implementierung, und es scheint mir ein wenig rückständig, sie in der Header-Datei zu deklarieren.

64voto

Kristopher Johnson Punkte 78933

Im Allgemeinen wird dies mit dem Idiom "pimpl" gehandhabt.

Siehe

11voto

Keith Nicholas Punkte 42417

Sie möchten etwas wie das PIMPL-Idiom verwenden

http://en.wikipedia.org/wiki/Opaque_pointer

8voto

Nemanja Trifunovic Punkte 23869

Siehe Pimpl Idiom

4voto

Nick Punkte 6782

Der klassische Weg, dies zu tun, ist ein Proxy-Zeiger auf eine interne Klasse, die die Funktionalität implementiert. Soweit ich weiß, gibt es in C++ keine Möglichkeit, partielle Klassendefinitionen zu verwenden.

1voto

Sie machen Werbung? ;)

Sie können Header-Dateien erstellen, in denen Sie nur die öffentliche und geschützte API deklarieren.

Dem Nutzer werden nur diese angezeigt, die er einbeziehen kann. Sie verknüpfen ihren Code mit einer Bibliothek, die Sie unter Verwendung der vollständigen API und der Definitionen erstellt haben.

Für Inline-Funktionen: Stellen Sie sicher, dass sie in nicht-inlined Code verwendet werden, dann gibt es eine Definition in der Bibliothek zur Verfügung (ich bin nicht sicher, dass es in der Benutzerimplementierung inlined wird, jedoch).

Bei Code-Vorlagen gibt es keinen wirklichen Ausweg. Eine halbherzige Lösung besteht darin, Code zu erstellen, der den Vorlagencode mit verschiedenen Objekttypen verwendet. Der Benutzer wird auf diese beschränkt sein, da sie die einzigen in Ihrer Bibliothek verfügbaren Definitionen sind.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X