Soweit ich weiß, müssen Template-Klassen und Template-Funktionen (größtenteils) in derselben Header-Datei deklariert und definiert werden. Mit dem gesagt:
Gibt es andere Möglichkeiten, eine separate Kompilierung von Vorlagendateien als die Verwendung bestimmter Compiler zu erreichen? Wenn ja, was sind das?
Was, wenn überhaupt, sind die Nachteile der Deklaration und Definition in der gleichen Datei?
Was gilt als Best Practice, wenn es um Template-Deklaration & amp geht; Definition?
So organisieren Sie den Vorlagenquellcode
Grundsätzlich haben Sie folgende Möglichkeiten:
Einer der Nachteile beim Implementieren von Vorlagen in den .h-Dateien besteht darin, dass bei jeder kleinen Änderung der Implementierung der gesamte Code, der die Vorlage verwendet, neu kompiliert werden muss. Es gibt wirklich keinen Weg um dies zu vermeiden, abgesehen davon, keine Vorlagen zu verwenden oder & amp; Definieren Sie sie in der CPP-Datei, in der Sie sie verwenden.
Sie können Vorlagen in einer separaten Datei implementieren und diese Datei dann aus der .h-Datei einschließen. Wie:
Meine persönliche Vorliebe besteht darin, Vorlagen direkt in der h-Datei zu implementieren, sofern sie nicht zu groß werden, und dann werde ich sie in h- und inc-Dateien aufteilen.
Nicht wirklich. Die Definition der Vorlage muss zum Zeitpunkt der Kompilierung verfügbar sein, da Vorlagen in Abhängigkeit von den Vorlagenargumenten, die Sie ihnen geben, instanziiert werden. Aus diesem Grund müssen sie in Kopfzeilen platziert werden, damit der Compiler den Code zum Schreiben einer neuen Instanziierung haben kann. Sie benötigen einen Compiler mit Unterstützung für das Schlüsselwort export.
Die Leute können Ihren Code sehen, wenn das ein Nachteil für Sie ist. Es könnte auch für einige Leute weniger "ordentlich" sein, aber ich denke nicht, dass das ein Problem ist.
export
Schlüsselwort, aber die meisten Compiler unterstützen dies nicht . Der einzige Mainstream, den ich kenne, der dies unterstützt, ist der Comeau Compiler.