Templates impementieren



  • Hallo,

    Wo implementier ich templates aus?
    Im Header oder in der Source-Datei?
    Ich kann die doch in der Source-Datei ausimplementieren, oder?
    Ich krieg nämlich die ganze Zeit undefined references beim Linken.

    Gruß,
    Jens



  • DerJens schrieb:

    Hallo,

    Wo implementier ich templates aus?

    du musst vorher den entsprechenden header einbinden (.cpp datei ist auch möglich, aber nicht zu empfehlen)

    DerJens schrieb:

    Im Header oder in der Source-Datei?

    wenn du die templates einer source datei für andere verfügbar machen willst folgendes:

    #include "mycode.cpp"
    

    DerJens schrieb:

    Ich kann die doch in der Source-Datei ausimplementieren, oder?

    s. 1. und 2.



  • Templates können nur dann instanziiert werden, wenn der Compiler den Template-Code (Implementierung) und die aktuellen Template-Parameter (Verwendung) zusammen hat*. Deshalb mußt du die Implementation immer vor Ort haben - meistens direkt im Header oder in einer .IMP Datei, die am Ende des Headers eingebunden wird.

    * offiziell gibt es das Schlüsselwort 'export', aber das unterstützt (edit: fast) kein Compiler.



  • Danke!

    Implementiert ihr denn im Header aus oder in ner seperaten imp-Datei,
    die im Header am Ende inkludiert wird?



  • @CStoll
    export ändert nichts an der von dir genannten Tatsache. Auch mit export muss der Compiler die Definition des zu instanziierenden Templates kennen - in der ein oder anderen Form, aber sicher nicht in Form einer klassischen Objektdatei. Und btw: der Comeau-Compiler unterstützt export.


Anmelden zum Antworten