Cross-Quelldatei Vorlage Instanziierung und Verwendung
-
26-09-2019 - |
Frage
habe ich eine Klasse mit mehreren Vorlagen-Element-Funktionen, dass ich unter mehreren Quelldateien verteilen möchte Kompilierungszeiten zu beschleunigen. (Die Vorlagen sind Details Implementierung und werden nicht außerhalb der Klasse verwendet werden soll, damit deren Definition in den Quellen nicht Header.)
Wie würde ich mich über Aufspaltung dieser Vorlagen in einer solchen Art und Weise, dass ich nicht Linkerfehler bekommen? Wenn ich Quelldatei A mit einer Vorlage in Quelldatei B definiert haben, wie kann ich sicherstellen, dass die entsprechende Instanz der Vorlage durch den Compiler aufgebaut ist?
Lösung
konnte ich es nicht besser als C ++ FAQ beantworten:
https://isocpp.org/wiki/faq/templates#templates- defn-vs-Decl
Andere Tipps
nicht einfach, diese Vorlage Elemente als Teil der Klasse in der Header-Datei deklarieren. Dann definieren Sie Ihre Vorlagen nur in der Quelldatei. Zum Beispiel:
MyClass.hpp
class MyClass
{
public:
void SomePublicMethod() const;
};
MyClass.cpp
template<class T>
void SomethingWithT(T myVal)
{
// ...
}
void MyClass::SomePublicMethod() const
{
SomethingWithT(42);
}