template funktion extern deklarierbar?



  • ich hab in nem file ne funktion drin:

    template<typename T> 
    bool prepare ( const T&  t  )
    {
    //..
    }
    

    die möchte ich in nem anderen file benutzen.
    habs so probiert, die im anderen file zu deklarieren:

    template<typename T> 
    extern bool prepare ( const T&  t  );
    

    die funktion wird aber nicht gefunden.

    Verweis auf nicht aufgelöstes externes Symbol ""bool __cdecl prepare<wchar_t *>(wchar_t * const &)" (??$prepare@PA_W@@YA_NABQA_W@Z)" in Funktion "_WinMain@16"

    😕



  • Du musst Templates in Headern definieren (nicht nur deklarieren).



  • Ah! Supi, danke!



  • Der Standard sieht dafür das Schlüsselwort "export" statt "extern" vor. Das "export" hätte -- soweit ich weiß -- auch in alle Dateien reingemusst. "export" wird nur von so gut wie keinem Compiler unterstützt, weswegen der Rest der Welt Templates komplett in Header-Dateien definiert.

    Mehr Infos Dazu --> Suchmaschine fragen. Vielleicht mit Begriffen wie
    C++, template, compilation model, export, ...

    Gruß,
    SP


Anmelden zum Antworten