[C++] Für Bibliothek innere Header maskieren

Programmiersprachen, APIs, Bibliotheken, Open Source Engines, Debugging, Quellcode Fehler und alles was mit praktischer Programmierung zu tun hat.
Antworten
Benutzeravatar
Raphael
Beiträge: 65
Registriert: 22.12.2011, 13:39
Echter Name: Raphael Menges

[C++] Für Bibliothek innere Header maskieren

Beitrag von Raphael »

Hallo,

ich probiere aktuell etwas mit C++ herum und habe da eine Frage, auf welche ich auch nach einer ausgiebigen Suche keine Antwort gefunden habe:

Nehmen wir mal an, ich würde eine Bibliothek "2fAddition" erstellen wollen, welche vier float-Werte entgegennimmt und intern mit dem Datenkonstrukt "Vector2f" rechnet. Für die Klasse "Vector2f" gäbe es einen Header (Vector2f.h) und eine Implementation (Vector2f.cpp). Die Fassade "2fAddition.h" würde "Vector2f.h" inkludieren und in "2fAddition.cpp" für die Berechnung benutzen. Wenn ich es nun als Bibliothek builde, müsste ich die "Vector2f.h" immer mitgeben. Wie bekomme ich es allgemein hin, dass ich nur die Fassade "2fAddition.h" als Header mitgeben muss? In diesem Beispiel könnte man das natürlich alles in die "2fAddition.cpp" packen oder so, aber ich wüsste gerne, welche Strategie da bei größeren Projekten angewendet wird. Kann man vielleicht die "internen" Header irgendwie vor den restlichen Quellcode in die Bibliothek backen lassen?

Danke ;)
Benutzeravatar
Krishty
Establishment
Beiträge: 8316
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: [C++] Für Bibliothek innere Header maskieren

Beitrag von Krishty »

Nehmen wir mal an, ich würde eine Bibliothek "2fAddition" erstellen wollen, welche vier float-Werte entgegennimmt
    addition2f(float, float, float, float);

Du verteilst diese Zeile und die lib.
Die Fassade "2fAddition.h" würde "Vector2f.h" inkludieren
Warum würde eine Schnittstelle Interna inkludieren?!
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Raphael
Beiträge: 65
Registriert: 22.12.2011, 13:39
Echter Name: Raphael Menges

Re: [C++] Für Bibliothek innere Header maskieren

Beitrag von Raphael »

Und dann "Vector2f.h" in die "2fAddition.cpp" inkludieren? Die Lösung war zu einfach :D In "Vector2f.h" könnte ich dann aber wieder normal alles in den Header inkludieren, was ich an anderen Strukturen theoretisch bräuchte, oder?
Benutzeravatar
Krishty
Establishment
Beiträge: 8316
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: [C++] Für Bibliothek innere Header maskieren

Beitrag von Krishty »

Du sollst nicht alles inkludieren, was du theoretisch bräuchtest, sondern nur, was du tatsächlich brauchst. Aber ja; möglich ist’s ;)
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Antworten