Lib mit Templates und ein Linkerfehler
-
Hallo,
ich habe ein Problem und komme selbst nicht auf die Lösung. Ich habe innerhalb einer Bibliothek eine Klasse definiert, die eine Liste verwaltet. Sie ist als Template definiert, wird wie folgt eingesetzt:
myList<myClass> liste;
Der Compiler frisst den Kode, aber wenn ich die Bibliothek in ein anderes Projekt einlinke und wie oben nutze, kommt eine Linkerfehler. Der Linker findet Konstruktor/Destruktor usw. nicht. Alle anderen Klassen der Bibliothek lassen sich nutzen. Wo sitzt der Fehler?
(Ich nutze den VC7-Compiler, der Fehler ist vom Typ LNK2019)Grüsse,
Sebastian
-
Bei templates muss der ganze Code in den Header, nicht nur die Deklaration, sonst kann der Compiler ihn nicht konkretisieren. Es gibt zwar ein Keyword "export", dass das Aufteilen von templates in mehrere Dateien ermöglicht, aber das versteht, soweit ich weiß, nur der comeau-Compiler.
-
Danke, mit der Definition im Header funktioniert's, ist allerdings nicht so hübsch.
-
c++koder schrieb:
Danke, mit der Definition im Header funktioniert's, ist allerdings nicht so hübsch.
Kannst ja die Definition trotzdem in eine eigene Datei auslagern (zB mylist.inl) und fügst dann am Ende der Headerdatei ein
#include "mylist.inl"
ein.