Template-Klassen
-
Kann mir bitte jemand ein Beispiel geben, wie ich im BCB eine Template-Klasse erstelle, wenn Deklaration und Implementierung in 2 verschiedene Dateien aufgeteilt sind?
-
Wie in zwei dateien? Meinst du auf die .H datei und die .cpp?
-
Genauso wie mit jedem anderen C++-Compiler auch?!
-
also gar nicht?
[ Dieser Beitrag wurde am 22.04.2003 um 08:54 Uhr von dreaddy editiert. ]
-
Original erstellt von Eßer:
Genauso wie mit jedem anderen C++-Compiler auch?!der BCB ist kein compiler sondern eine IDE aber im grunde genommen hast du recht !
-
Also theoretisch sollte das mit dem Schlüsselwort export funktionieren..... nur leider scheint das jeder bekannte Compilerhersteller ziemlich zu ignorieren.
Such mal im C++ Forum nach export.
-
Bitte? Templates werden doch mit dem Schlüsselwort "template" deklariert?
-junix
-
Bei mir funktioniert das beschriebene Einwandfrei sofern ich das richtig verstanden habe !
// File1.cpp #include "File1.h" //------------------ huhu<class T>::huhu() { // do smth... } //--------------------- huhu<class T>::~huhu() { //do smth } //FIle1.h template<class T> class huhu { private: public : huhu(); ~huhu(); };
edit :
auszug aus der Borland C++ Builder 6 enterprise Hilfe zu export :
Beschreibung Das Schlüsselwort export ist für zukünftige Implementierungen reserviert und in dieser Version keine Wirkung.
obwohl export hier wohl nix zur Sache tut
[ Dieser Beitrag wurde am 22.04.2003 um 09:34 Uhr von 1ntrud0r editiert. ]
-
Wollen wir nicht mal warten, bis <neu_hier> erklärt, wo genau sein Problem liegt? Erst dann kann ja entschieden werden, ob es BCB-spezifisch ist oder nach "C++" gehört.
-
Das Problem tritt auf wenn man von einer dritten Datei auf das Template zugreifen will.
// File1.cpp #include "File1.h" //------------------ huhu<class T>::huhu() { // do smth... } //--------------------- huhu<class T>::~huhu() { //do smth } //FIle1.h template<class T> class huhu { private: public : huhu(); ~huhu(); }; //File3.cpp #include "File1.h" huhu<int> selberhuhu; // wieso geht das wohl net :rolling_eyes:
und das geht nur mit export oder wenn man alles in die .h Datei schreibt
Natürlich ist export noch reserviert und ohne Funktion, weil die es nochnicht gebacken bekommen haben es so zu implementieren wie es im Standard steht
[ Dieser Beitrag wurde am 22.04.2003 um 14:04 Uhr von dreaddy editiert. ]
-
Deswegen sind ja Template-Klassen auch ausschliesslich im Header implementiert... (keine cpp-file)
-junix
-
oh lol sorry
unit compilieren geht
aber ganz net o.O
[ Dieser Beitrag wurde am 22.04.2003 um 14:13 Uhr von 1ntrud0r editiert. ]