Linker und Namensräume



  • Hallo,

    angenommen ich moeche ein Klasse einbinden, die in einer separaten
    Quelldatei definiert ist, dann würde ich für

    class foo {private: int x;public: f() {cout << x << endl;}};
    

    eine .h Datei anlegen, nämlich

    class foo {public: f();};
    

    geht aber leider nicht 😞

    der Linker meldet dann "undefined reference: foo::f(void)"
    und ich muss explizit foo::f() definieren und die class Definition
    in den Header verschieben.
    Dann ist die Klassendefinition auf eine .h und ein .cpp verteilt,
    public und private Daten, sowie die Funktionsdeklarationen in der h, die
    Funktionen selbst in der .cpp Datei.
    Das finde ich extrem unübersichtlich und auch nicht wirklich OOP, da
    Funktionen und Daten logisch (im Quelltext) an verschiedenen Stellen
    auftauchen.

    Geht das auch anders ?
    Vielen Dank und liebe Grüsse,
    metachris



  • Ups, ich seh gerade weiter unten gibs da schon einen Thread zu sorry (;
    Aber so wie es da beschrieben ist will ich es gerade nicht haben


Anmelden zum Antworten