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