F
@EvD sagte in erzeugen einer static lib mit Vererbung und template:
@Th69 kann man beim erzeugen einer library die Templates ersetzen lassen
Oder muss ich das händisch machen
Diejenigen Template-Instanzen, die du innerhalb des Library-Codes (.cpp) verwendest, werden implizit instanziiert und Teil des Objekt-Codes (sprich Teil der - in deinem Fall - statischen Bibliothek).
Wenn du bestimmte Kombinationen von Template-Parametern jedoch nicht in deinem .cpp-Code verwendest, aber dennoch möchtest, dass sie in die statische Bibliothek einkompiliert werden, dann kannst du (in der .cpp) die Templates auch explizit instanziieren (vgl. Class template instantiation - Explicit instantiation):
//A.cpp
...
template class A<int>;
template class A<bool>;
template class A<double>;
Damit kann man auch die Template-Implementierung (z.B. A<T>::get() { ... }) wie du das gemacht hast auch in die .cpp-Datei packen*. Dann kann dann aber als Anwender nur diejenigen Template-Instanzen verwenden, die man in der .cpp explizit hingeschrieben hat. Bei meinem Beispiel wäre in Code, der die Bibliothek verwendet, kein A<std::string> oder A<MeineKlasse> möglich. Möglicherweise will man aber auch gerade das.
Bedenke aber, dass du so absolut jede Template-Instanz, die deine Bibliothek unterstützen soll, explizit hinschreiben musst. Wenn die Template-Implementierung im Header steht, ist das nicht notwendig (daher ist das oft die bessere Wahl und erstmal die "default"-Empfehlung).
* Das mit dem "Template-Implementierungen in den Header" ist kein ehernes Gesetz, wenn man weiss wie und warum man das macht - es vermeidet nur typische Anfängerfehler bei der Verwendung von Templates und ist in den allermeisten Fällen auch das, was man haben will.