У меня большой список функций, которые имеют одинаковую сигнатуру параметра:
SKString Login(SKString requestAsJson, const SKAppActionsInterface& appIface)
SKString SimulateUser(SKString requestAsJson, const SKAppActionsInterface& appIface)
SKString ResetSimulatedUser(SKString requestAsJson, const SKAppActionsInterface& appIface)
...
В другой функции я вызываю эти функции в большом операторе switch:
switch (request->Action)
{
case RequestAction::Login:
return Login(requestAsJson, appIface);
case RequestAction::SimulateUser:
return SimulateUser(requestAsJson, appIface);
case RequestAction::ResetSimulatedUser:
return ResetSimulatedUser(requestAsJson, appIface);
...
}
Все в одном и том же файле c ++.
Интересно, смогу ли я как-нибудь автоматически сгенерировать код оператора switch во время компиляции?
Я хотел бы написать какой-нибудь макрос для написания определения функции head:
REQUEST_FUNCTION(Login)
{
//implementation here
}
, который должен генерировать правильную функцию head (easy), но также добавлять имя к некоторому контейнеру времени компиляции.
Тогда можно было бы выполнить итерацию по контейнеру времени компиляции для генерации различных блоков дел.
Возможно ли это и как? Использование C ++ 11.