template problem:



  • folgende klasse:

    class Application
    {
    //....
    
    template <class t>
    void run(t arg);
    
    //....
    };
    
    //Implementation in Datei "Application.cpp"
    
    template <class t>
    void Application::run(t arg)
    {
        arg.run();
    }
    

    wird in folgender klasse verwendet:

    class Game
    {
    //...
    void run();
    //...
    }
    
    //Implementation in "game.cpp"
    
    void Game::run()
    {
        Application a;
        a.run(this);
    }
    

    (grobe Struktur, hier irgendwo liegt der Fehler, ich weiss nur nich wo)

    folgende Fehlermeldung:

    error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: void __thiscall Application::run<class Game *>(class Game *)" (??$run@PAVGame@@Application@@QAEXPAVGame@1@@Z)" in Funktion ""public: bool __thiscall Game::run(void)" (?run@Game@@QAE_NXZ)

    wo liegts?

    edit: was is in poker ein shootout turnier? (holdem)



  • Wenn Du Templates verwendest, kannst Du nicht in Header- und Implementierungsdateien trennen. Dazu gibt es im Standard zwar das Schlüsselwort 'extern', das kennt aber kaum ein Compiler. => Pack die Implementierung der Template-Funktion in den Header.

    Von Poker habe ich keine Ahnung.





  • Konrad Rudolph schrieb:

    Dazu gibt es im Standard zwar das Schlüsselwort 'extern', das kennt aber kaum ein Compiler.

    Abgesehen davon heißt das Schlüsselwort eh export.



  • GPC schrieb:

    Abgesehen davon heißt das Schlüsselwort eh export.

    OMG. Wieso habe ich denn 'extern' geschrieben? 😮


Anmelden zum Antworten