Der C++ - Compiler muss Zugriff auf die Implementierung der Methoden haben, um eine Vorlagenklasse zu instanziieren. Daher müssen wir entweder die Definitionen einer Vorlage in die Header-Datei aufnehmen, die diese Vorlage deklariert, oder sie in Header-Dateien definieren. Aber ich möchte die Implementierung (Definitionen) meiner Funktionen aus vielen Gründen vor meinen Benutzern verbergen und sicherstellen, dass sie nur Zugriff auf die Funktionsdeklarationen haben. Ist dies bei der Verwendung von Vorlagen in C++ möglich?Verbergen der Definition von C++ - Vorlagenklassenelementfunktionen
Antwort
Dies wird normalerweise (z. B.) in Boost durchgeführt, indem eine Verzeichnishierarchie impl
und detail
erstellt wird.
impl
haben in der Regel die implementatios für die Funktion API Mitglied ausgesetzt, während im Inneren des detail
, wie Sie vielleicht schon erraten haben, die gritty Details hat, die Sie nicht wollen, zu belichten. Dieses System wird von den C++ - Entwicklern ziemlich gut verstanden.
Als Beispiel:
my_service.hpp impl/my_service.hpp impl/my_service.ipp (OR) detail/my_service.ipp
So ist die Idee, die Header-Dateien zu teilen und die den Nutzern nur Ihre Top-Level-Header-Datei enthalten, die intern werden die anderen Dateien enthalten.
Aber niemand stoppt die Benutzer, um die impl
Header-Datei als auch direkt aufzunehmen. Wenn Sie das auch vermeiden wollen, dann können Sie etwas in den Zeilen Prevent header from being included in some files, in compilation time?
- 1. Ctypes: DataTypes von C-Definition
- 2. Definition von 'enumerator' in C#
- 3. Die Definition der Graph in C
- 4. Informationen der Anwendung in C# von Disassembler verbergen
- 5. scala: Begleiter verhindern Objekt zum Verbergen der Definition der ursprünglichen Klasse
- 6. C Struct Definition Standard
- 7. Struct Definition in C
- 8. C++ alternatives Mitglied Definition
- 9. Definition von C# Datenstrukturen und Algorithmen
- 10. Seltsam typedef Definition C++
- 11. C++ Map Definition Grundlagen
- 12. C++: "mehrere Definition von 'mainCRTStartup'" Fehler usw.
- 13. C++ Definition von Dllimport statischem Datenelement
- 14. C++: mehrere Definition von `mainCRTStartup‘ Fehler etc
- 15. Makro ohne Definition in C
- 16. Definition für main() in C
- 17. SyntaxError von der Definition von verschachtelten Wörterbuch
- 18. C++ unbenannte (anonym) Namespace-Definition
- 19. C++ Member-Funktion Pointer Definition
- 20. Zeigen/Verbergen der Zeilen Sichtbarkeit von Parameter
- 21. Objective C Klasse Definition Verwirrung
- 22. Definition von 'clean code'
- 23. In der C-Sprache, Struktur, feinen Unterschied in der Definition
- 24. Wie überprüft C# die C# private Definition?
- 25. Ziel C Definition UIColor Konstanten
- 26. C Collect2 Multiple Definition Fehler
- 27. C++ anonyme struct ungewöhnliche Definition
- 28. Definition von statischen Arrays
- 29. Definition der Schnittstelle
- 30. Definition der SSH-Identität