[g++] funktionen aus klassentemplates auslagern??
-
hi,
mein problem besteht darin, dass mir der g++ linkerfehler
ausspuckt wenn ich versuche die funktionen einer templateklasse
in einem *.cpp-file auszulagernz.b.:
//*.h-file template<class type> class xxx { public: bool machwas(type& x); }; //*.cpp-file template<class type> bool xxx::machwas(type& x) { return true; }
eigendlich dachte ich, dass das funktioniert da mir der g++ beim
kompiliren ja keine fehler anzeigt...
aber beim linken sagt er mir, dass die funktion xxx::machwas(type& x)
nicht referenziert ist...hab ich da irgendwas falsch gemacht oder muss ich beim g++
ne bestimmte option mit angeben??mfg
Plassy[ Dieser Beitrag wurde am 27.05.2003 um 16:23 Uhr von Plassy editiert. ]
-
templates muessen zur compile Time bekannt sein - auslagern wie du es willst ist unmoeglich.
mittels dem keyword 'export' kann die implementation tweilweise auslagern (der source muss aber zur compile Time vorhanden sein) - aber export wird nur vom comeau compiler unterstuetzt.
am besten du machst es wie alle:
//*.h-file template<class type> class xxx { public: bool machwas(type& x); }; #include "*.inl" //*.inl-file template<class type> bool xxx::machwas(type& x) { return true; }
-
Hast du das Objectfile auch mitgelinkt bei deiner App? Oder hast du die CPP nicht compiled, sondern nur die .H angegeben?
Extra Option dafür brauchst du nicht.
-
thx,
ich probier das mit den *.inl-files malps: natürlich hab ich das object-file mitgelinkt ...
so dumm bin ich nu auch wieder nichtmfg
Plassy
-
Is nicht böse gemeint, kann ja mal vorkommen
Außerdem weiß man auf einem Board nie, wen man vor sich hat.