Spezialisierte Templates in DLL?



  • Hallo,

    gibt es eine Möglichkeit, in einer Laufzeitbibliothek bestimmte Methoden eines Klassentemplates zu spezialisieren?

    Ich habe derzeit drei Projekte, zwei davon sind DLLs. In DLL A befindet sich die Template-Klasse

    TypeInfo<Derived, Parent=Derived, Base=Derived>
    

    . DLL B beinhaltet nun eine Klasse

    class xyz : public TypeInfo<xyz> { ... }
    

    Eine bestimmte Templatemethode soll in B spezialisiert werden:

    template<>
    void TypeInfo<xyz>::bar() { ... }
    

    Soweit, so gut. Sowas funktioniert in einer monolithisch kompilierten Anwendung ja ganz gut, jedoch scheint es unter Laufzeitbibliotheken nicht so einfach zu sein. Was muss ich hier anpassen/ändern, damit mein Konzept modulisierbar wird?

    Danke für Eure Hilfe schonmal!



  • Hallo tpl,
    Klassen-Templates müssen während der compilation einer unit ja sichtbar sein. Die eigentliche Klasse wird ja erst dann aus der Vorlage instanziiert. (Aus dieser instanziierten Vorlage kannst du dann irgendwo tatsächlich Objekte erzeugen.) D.h. du wirst deine Templates eh in den Headern zu deinen DLLs exposen müssen. Sie sind also nicht in der DLL sondern in den Header files. Und denen ist erstmal egal, ob später zur Laufzeit dynamisch gegen irgendwas gelinkt wird.
    Ich schließe aber auch nicht aus, dass ich das, was du eigentlich willst, total falsch verstanden hab'. 😉


Anmelden zum Antworten