[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 auszulagern

    z.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 mal

    ps: natürlich hab ich das object-file mitgelinkt 🙄...
    so dumm bin ich nu auch wieder nicht 😉

    mfg
    Plassy



  • Is nicht böse gemeint, kann ja mal vorkommen 🙂
    Außerdem weiß man auf einem Board nie, wen man vor sich hat.


Anmelden zum Antworten