Ableiten von Temapltes
-
Halloechen liebe c++-Gemeinde

diesmal hab ich ein kleines Problemchen mit der Ableitung einer normalen Klasse von einer Template-Klasse. Meine Definitionen/Deklarationen sehen wie folgt aus:
template <class I> class TArithmetic : public IrgendeineBaseKlasse { //[...] }; //implementation include #include "TArithmetic.cxx" // da sind die Implementierungen drin class TInt : public TArithmetic<long int> //line 61 { //[...] };Er mosert:
:61: error: `TInt' is not a template typeMuss ich TInt etwa auch als template definieren? ist doch eigentlich keins...
-
Welchen Sinn hat das:
#include "TArithmetic.cxx"Würde mal schätzen, ist ein Folgefehler. Willste nicht lieber den Templateheader inkludieren?
-
Der Header ist ja eben der oben beschriebene Code. (das ist n Ausschnitt aus meiner .hpp). Da man aber einerseits die Definitionen der Templatemethoden nicht in eine eigene Objektdatei compiliert werden koennen, andererseits aber auch nicht unbedingt was in der eigentlichen Headerdatei zu suchen haben, inkludiere ich sie in diesem Fall unter der Deklaration. Andere machen das ganz am Ende ihrer Headerdateien...
also sinngemaess:
//TArithmetic.hpp template <class I> class TArithmetic { void bla(); }; #include TArithmetic.cxx//TArithmetic.cxx template<class I> void TArithmetic<I>::bla() {return;};//TInt.hpp #include TArithmetic.hpp class TInt : public TArithmetic<long int>// TInt.cpp #include TInt.hpp // Definitionen der TInt Methoden
-
Also sinngemäß sieht das richtig aus. Der Fehler liegt woanders.
(Meine Lieblingsantwort :D)
EDIT: Sofern in TArithmetic.hpp sinngemäß "template<class I> class TArithmetic" steht natürlich.
-
natuerlich, hab ich wohl etwas zu sehr geschrumpft.
/edit: lag wohl doch an dem zwischenliegenden Include, warum auch immer. Als ichs ans Ende geschoben hab gings ploetzlich.