[ERLEDIGT] template
-
Hallo,
ich habe gelesen das ein template in der Header Datei definiert werden sollte.
Tatsächlich ist es bei mir so, wenn ich es in der CPP definiere und in der H nur deklariere, bekomme ich unresolved links?Wie könnte man das umgehen? Es sieht einfach zum *** aus.
-
Der Grund ist, dass der Compiler für die Instantiierung des Templates dessen kompletten Code kennen muss. Man umgeht das üblicherweise, indem man die Implementierung in eine .inl-Datei auslagert (oder .cpp oder was du willst) und diese am Ende der Headerdatei inkludiert.
-
ipsec schrieb:
Der Grund ist, dass der Compiler für die Instantiierung des Templates dessen kompletten Code kennen muss. Man umgeht das üblicherweise, indem man die Implementierung in eine .inl-Datei auslagert (oder .cpp oder was du willst) und diese am Ende der Headerdatei inkludiert.
Danke für die schnelle Antwort.
-
.cpp-Dateien würde ich grundsätzlich nie inkludieren, stattdessen kannst du .inl, .hpp, .h, .impl, .ipp oder sowas nehmen. Ich verwende immer .inl als Dateiendung für Template-Implementierungsdateien.