Ich entwickle gerade eine kleine Anwendungsklasse. Es soll bestimmte Schritte bei der Verwendung von SDL2 weniger schmerzhaft machen. Zum einen möchte ich, dass eine Funktion namens handleEvent beim Implementieren der abgeleiteten Klasse (die Anwendungsklasse ist eine Basisschnittstelle) überladen wird, um das aktuelle SDL_Event automatisch zu übergeben, damit der Benutzer damit arbeiten kann.Wird SDL eine reine virtuelle Memberfunktion als Ereignisrückruf aufrufen?
Ich dachte, dass die Verwendung der integrierten SDL-Funktion SDL_AddEventWatch, um einen Rückruf zu erstellen, besser wäre, als einen Thread zu starten und es manuell nach neuen Ereignissen suchen und die Mitgliedsfunktion aufrufen.
Die SDL Documentation for the function spezifiziert jedoch nicht die Verwendung einer Elementfunktion als "Filter". Und ich benutze sogar eine reine virtuelle Mitgliedsfunktion!
Bitte beachten Sie, dass der einzige Parameter, den diese Funktion benötigt (aus meiner Sicht), ein Zeiger auf die gerade zu verarbeitenden Even ist. Auf diesen This-Zeiger muss jedoch immer noch zugegriffen werden, so dass der Benutzer einfach Dinge in der Klasse direkt ändern kann.
Was ist die richtige Methode, dies zu implementieren?
Wo ist Ihr Code? – Phil1970
Kann das Problem ohne den Code nicht sehen. Schreiben Sie eine Funktion, die Ihre Callback-Objekte durchläuft und aufruft, wie Sie möchten, und legen Sie sie als SDL-Ereignis-Callback fest. Beachten Sie, dass sich die Ereigniswarteschlange nicht selbst füllt und Sie immer noch 'SDL_PumpEvents' aufrufen müssen. – keltar