ich habe einen TimerManager gebaut der eine Time Klasse beinhaltet, die einen Integer für die Sekunden und einen double für den Nachkommateil nutzt. Der Manager ruft Funktionen die als Funktionspointer übergeben wurden auf, wenn ihre Time-Eigenschaft kleinergleich (also früher) als die jetzige ist. Momentan müssen diese Funktionen 2 Parameter beinhalten, einen Integer und einen Double, und ich würde gerne das ich ohne große Umwege auch Funktionen die ein Time-Objekt als Parameter haben benutzt werden können. Dies müsste eigentlich gehen, da die Time-Klasse dieselben Datentypen in derselben Reihenfolge beinhalten. Geschrieben ist der Code in C/C++.
Also hier gibt es verschiedene Lösungen: 1. Wenn eines Instanz des TimerManagers nur eine Funktion aufruft und keine Liste von Callbacks, bietet sich eine Template-Lösung an. Du übergibtst einfach den Typ des Funktionspointers als Template-Parameter an und implementierst dafür entsprechene Spezialisierungen.
2. Du benutzt virtuelle Funktionen. Also eine Basisinterface "Callback" und davon für beide Fälle eine Interface ableiten. Die Empfänger deines Callbacks müssen dann das jeweilige Interface implementieren.
3. Du benutzt Delegates. Du nutzt quasi ein Delegate-Objekt als Übersetzer zwischen der Polymorphie aus 2. und deinen Funktionspointern. Das folgende ist jetzt nur schnell runtergetippt, kann man sicher schöner lösen, mit Templates oder so.
Mitglieder in diesem Forum: 0 Mitglieder und 12 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.