A good way to implement useable Callbacks in C++
- by Marcel J.
I have a custom Menu class written in C++. To seperate the code into easy-to-read functions I am using Callbacks.
Since I don't want to use Singletons for the Host of the Menu I provide another parameter (target) which will be given to the callback as the first parameter (some kind of workaround for the missing "this" reference).
Registration-Signature
AddItem(string s, void(*callback)(void*,MenuItem*), void* target = NULL)
Example of a Registration
menu->AddItem(TRANSLATE, "translate", &MyApp::OnModeSelected);
Example of a Handler
/* static */
void MyApp::OnModeSelected(void* that, MenuItem* item) {
MyApp *self = (MyApp*)that;
self->activeMode = item->text;
}
Is there anything one could consider dirty with this approach? Are there maybe better ones?