Ich habe eine Klasse namens "SimObject":
%Vor%Ich habe eine andere Klasse namens "ITerrainDrawable":
%Vor%Diese Klassen befinden sich in verschiedenen Bibliotheken. SimObject ist in simBase, ITerrainDrawable ist in simTerrain-Bibliotheken. Selbst wenn ITerrainDrawable von SimObject abgeleitet ist und ich die Bibliothek von simBase eingebunden habe, bekomme ich einen Linkfehler:
%Vor%ungelöstes externes Symbol
Warum bekomme ich diesen Fehler?
Alles funktioniert gut, wenn ich die Template-Funktion nicht verwende, aber ich brauche sie.
Wenn ich diese Funktion in die simTerrain-Bibliothek verschiebe, funktioniert das gut, aber ich möchte keine doppelte Funktion verwenden, weil es viele Bibliotheken wie simTerrain gibt.
Es gibt zwei Kompilierungsmodelle für Vorlagen:
Sie können export keyword zum Zeitpunkt der Schablonendefinition für die zweite Option verwenden.
%Vor%Aber ich bin nicht sicher, dass alle Compiler es unterstützen.
Die vollständige Implementierung einer Vorlagenklasse muss in der Kopfzeile der Vorlagenklasse enthalten sein. Die ANSI / ISO-Standards für C ++ ermöglichen eine Möglichkeit, die Implementierung mit dem Schlüsselwort export in eine separate Kompilierungseinheit zu stellen. Derzeit gibt es jedoch Compiler, die dies tatsächlich unterstützen.