Timer in mehreren Dateien



  • Hallo zusammen!
    Bin noch nicht so ganz vertraut mit C++, deswegen verzeiht mir falls es nur ein dummer Fehler ist ­čśë

    Zum Problem:
    Ich habe versucht, einen Timer in mein Win32-Programm einzubauen und habe nun drei Dateien:

    main.cpp

    Class class1;
    SetTimer(NULL, 0, 1000,(TIMERPROC) &Class::myTimer);
    

    header.hpp

    void CALLBACK myTimer(HWND hwnd, UINT uMsg, UINT timerId, DWORD dwTime);
    

    functions.cpp

    void CALLBACK myTimer(HWND hwnd, UINT uMsg, UINT timerId, DWORD dwTime)
    {
        //auszuf├╝hrender Code
    }
    

    Nun erhalte ich jedoch folgende Fehlermeldung beim kompilieren:

    undefined reference to `Class::myTimer(HWND__*, unsigned int, unsigned int, unsigned long)
    

    Wenn ich alles in einer Datei habe, funktioniert das einwandfrei, so jedoch nicht.
    Wie kann ich die Referenz am Schluss der 'SetTimer'-Funktion nun an den Timer ├╝bergeben?

    MfG
    Frankiegi ­čÖé



  • Ist 'myTimer' eine freie Funktion oder Member der Klasse 'Class'?
    Bei ersterem einfach

    SetTimer(NULL, 0, 1000, &myTimer);
    

    Falls sie doch Member der Klasse ist, dann mu├č sie aber als statisch deklariert sein (Callbacks k├Ânnen keine [nicht-statischen] Klassenmethoden sein):

    // in header.hpp
    
    class Class
    {
      static void CALLBACK myTimer(HWND hwnd, UINT uMsg, UINT timerId, DWORD dwTime);
    };
    

    PS: Und es fehlt dann der Klassenname:

    void CALLBACK Class::myTimer(HWND hwnd, UINT uMsg, UINT timerId, DWORD dwTime)
    {
        //auszuf├╝hrender Code
    }
    


  • Th69 schrieb:

    Ist 'myTimer' eine freie Funktion oder Member der Klasse 'Class'?

    Zweiteres ist der Fall. Ich habe die Funktion als statisch deklariert und den Klassennamen hinzugef├╝gt, funktioniert nun einwandfrei!
    DANKE!
    Habe mir schon ewig den Kopf zerbrochen, wegen so einem Fl├╝chtigkeitsfehler ­čśí
    Sch├Ânen Abend noch ­čśë


Log in to reply