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.