Guten Abend,
mein kleines Anliegen ist etwas speziell. Es geht um Template-Klassen in C++, die sich in einer externen Bibliothek befinden. Packt man sie in eine Header-Datei, so muss man ja vom Prinzip her sämtliche Klassendefinitionen mit in die Header-Datei packen. Bei Klassen, die kein Template sind, packe ich die Funktionsdefinitionen immer in die *.cpp Datei.
Templates sind äußerst nützlich, zwingen mich aber, von der mir gesetzten Regel abzuweichen, was ja auch erst mal logisch ist. Der Compiler muss ja zur Kompilierzeit wissen, für welchen Typ er die Klasse denn nun "ausstechen" soll. Gibt es Methoden, um davon irgendwie abzuweichen? Wahrscheinlich nicht, denn aus einer Template-Klassen-Definition, die sich schlussendlich in einer *.lib Bibliothek befindet, kann der Compiler/Linker keine vollständig typisierte (stenciled) Funktion mehr erstellen. Wie gesagt, etwas speziell, aber vielleicht hat ja jemand etwas Ahnung davon, wie der Compiler hier letzten Endes arbeitet.
mein kleines Anliegen ist etwas speziell. Es geht um Template-Klassen in C++, die sich in einer externen Bibliothek befinden. Packt man sie in eine Header-Datei, so muss man ja vom Prinzip her sämtliche Klassendefinitionen mit in die Header-Datei packen. Bei Klassen, die kein Template sind, packe ich die Funktionsdefinitionen immer in die *.cpp Datei.
Templates sind äußerst nützlich, zwingen mich aber, von der mir gesetzten Regel abzuweichen, was ja auch erst mal logisch ist. Der Compiler muss ja zur Kompilierzeit wissen, für welchen Typ er die Klasse denn nun "ausstechen" soll. Gibt es Methoden, um davon irgendwie abzuweichen? Wahrscheinlich nicht, denn aus einer Template-Klassen-Definition, die sich schlussendlich in einer *.lib Bibliothek befindet, kann der Compiler/Linker keine vollständig typisierte (stenciled) Funktion mehr erstellen. Wie gesagt, etwas speziell, aber vielleicht hat ja jemand etwas Ahnung davon, wie der Compiler hier letzten Endes arbeitet.