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?

War es hilfreich?

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);
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top