Klassen-header in mehreren Übersetzungseinheiten



  • Hallo,
    ich habe folgende Header/Source-file Struktur:

    unit1.cpp --includes--> lib.hpp

    unit2.cpp --includes--> lib.hpp

    lib.hpp: ist der "Haupt-header" einer library und stellt Definitionen für mehrere Klassen/Funktionen... bereit.

    unit1 und unit2 greifen jetzt auf einige dieser Klassen/Funktionen... zu.
    Das Problem:
    beim kompilieren erhalte ich "multiple definition" errors. Mir ist klar, dass ich, wenn ich den gleichen header in mehreren Übersetzungseinheiten benutzen will, extern benutzen muss.
    Extern funktioniert nur leider nicht mit Klassen.
    Was muss ich jetzt also machen?
    Bin ich blind?
    Mfg, awds



  • Zeig mal die lib.hpp.



  • awds schrieb:

    Das Problem:
    beim kompilieren erhalte ich "multiple definition" errors. Mir ist klar, dass ich, wenn ich den gleichen header in mehreren Übersetzungseinheiten benutzen will, extern benutzen muss.
    Extern funktioniert nur leider nicht mit Klassen.

    extern brauchst du auch nur bei Definitionen im Header, Klassen sind aber Typdeklarationen.

    Was dir vermutlich fehlen wird sind aber wohl Includeguards:

    #if !defined(NAMEDESHEADERS_HEADER)
    #define NAMEDESHEADERS_HEADER
    
    // <-- Hier dein eigentlicher Headerinhalt
    
    #endif
    

    cu André



  • ...Guter Tip,
    ich hatte in die lib.hpp die Source- statt die Header Dateien includiert.
    Danke.



  • Auf das wollte ich heraus.. 😉


Anmelden zum Antworten