С++ универсальный цифровой подписи делегатов
В моей встроенной программе у меня есть 5 "софт-клавиш", расположенных с жидкокристаллическим экраном.
Я хотел бы иметь указатель для каждой кнопки, который может указывать на свободные функции или функции-члены и может принимать любую подпись. Этот указатель необходимо будет перенаправить на другие функции во время выполнения. Очевидно, что мне требуется какая-то функция делегата, однако все примеры делегатов, которые я видел, требуют знания сигнатуры функции во время компиляции. Возможен ли делегат универсальной подписи для c++11?
Я открыт для предложений относительно лучшего подхода.
Чтобы продемонстрировать свой идеал..
Delegate *bd1; Delegate *bd2; Delegate *bd3; Delegate *bd4; Delegate *bd5; //initial assignment of buttons bd1 = del_CallMainMenu(); bd2 = SelectedWidget->del_AdjustWidgetUp(); bd3 = SelectedWidget->del_AdjustWidgetDn(); bd4 = nullptr; bd5 = del_Shutdown(); //Softkey 1 is pressed... void del_CallMainMenu() { //setup buttons for menu operations bd1 = Menu->del_GoBack(); bd2 = Menu->del_SelectUp(); bd3 = Menu->del_SelDn(); bd4 = Menu->del_Move(); bd5 = Menu->del_Select(); //<--another example of where delegate may be used to call particular routines //Do other stuff }
Что я уже пробовал:
После нескольких недель чтения, я думаю, что знаю ответ, и я думаю, что мне это не понравится. Если это так, я бы не возражал против альтернативных предложений.