Templates versus modulare Programmierung
-
Ich habe wieder einmal ein Problem:
Ich habe in einer Header Datei ein Klassentemplate definiert und habe in einer zugehörigen cpp-Datei die Methoden definiert (ohne extern). Wenn ich jetzt in einem Programm die Header-Datei include und die cpp-Datei mit in das Projekt stecke, kommt immer ein Linker-Error, weil der Linker der IDE (Dev-Cpp 4.9.9.0)irgendwie die Methoden-Definitionen nicht mit der Deklaration linken kann. Ich habe gelesen, dass man dazu die Methoden als export definieren muss. Dev-Cpp sagt dann aber immer nur, dass das export keyword nicht unterstüzt wird und es ignoriert wird.
Kann man das noch irgendwie anders machen? Oder gibt es andere Open-Source Compiler, die export unterstützen?
Danke für Eure Hilfe
Felix
P.S: Ich habe auch schon versucht, aus der Header-Datei und den Definitionen eine Bibliothek zu machen, und die dann zu dem Projekt zuzulinken. Das funktioniert aber auch nicht (Linker Error, wie oben). Das komische ist, das der so tut, als würde er es kompilieren, die Bibliothek aber nachher auch nur 420 Bytes (!) klein ist.
-
Hallo,
du kannst das Problem entweder dadurch beheben, dass du die ganze Implementierung
mit in die Header packst, oder aber du gehst hin und includierst die .cpp-Datei
am ende der Header.mfg
v R
-
der einzige compiler, der export unterstützt, ist der Comeau. also: die cpp datei immer an das ende des headers includen
-
otze schrieb:
also: die cpp datei immer an das ende des headers includen
Wobei ich die Datei in diesem Fall keinesfalls .cpp nennen würde. Eher .inl oder .tcc oder ähnliches.
Alternative: explizite Instanziierung bzw. Eric Nieblers Instantiator