Hi Leuts, ich habe ein kleines Problem mit den Timern unter Windows. Ich möchte mir, ähnlich einer SPS, einen Timer bauen, den ich mit einer Zeitvorgabe starte (ca. 100 ms), und der nach Ablauf nichts anderes macht als ein FALSE zurückzuliefern. Mit der Funktionen SetTimer klappt das eigentlich fehlerfrei. Ich starte den Timer im 10 ms Intervall und gebe ihm eine Funktion mit die in diesem Intervall aufgerufen wird. Dort zähle ich einfach einen Zähler hoch, der bei Erreichen des voreingestellen Wertes ein Flag auf False setzt. C++ like möchte ich das ganze nun in eine Klasse packen, demnach also auch die Funktion die beim Auslösen des Timers aufgerufen wird. Aber ich krieg irgendwie den Zeiger auf diese Methode nicht gebacken. Wie macht man sowas ? Greets Karlheinz
Das geht ungefähr so: in der Funktion auf die du einen Zeiger haben willst, deineKlasse.MemberFunktion(this); this ist dabei der Zeiger auf die Funktion in der du der Aufruf machst
Du könntest bei SetTimer einen Zeiger auf das Objekt übergeben (dieser void*-Parameter). In der Timer-Behandlung castest du mittels reinterpret_cast<> wieder auf den korrekten Zeigertyp und rufst wie gehabt mit -> die member-Funktionen auf: foo* bar = new foo; // objekt bar der Klasse foo SetTimer(/* ... */, bar); // delete bar nicht vergessen, // wenn bar nicht mehr gebraucht wird // In der Timer-Funktion mit void* param: foo* bar = reinterpret_cast<bar*>(param); bar->member_call(); // etc.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.