Я пытаюсь написать функцию, которая возвращает различные типы в зависимости от оператора if.Функция C++ с переменным возвращаемым типом с использованием «auto»
auto parseParameterValue(QString aParameterValueString, int aParameterType)
{
if(aParameterType == 0)
{
int result = aParameterValueString.toInt();
return result;
}
else if(aParameterType == 1)
{
double result = aParameterValueString.toDouble();
return result; // <------- compilation error
}
else
{
return aParameterValueString;
}
}
К сожалению, то, что я получаю:
- Внимание: функция 'parseParameterValue' использует 'Auto' спецификатора типа без закрывающего типа возвращаемого значения
- Ошибки при втором возвращении: противоречивый вывод для «авто ':' int ', а затем' double '
Есть ли способ заставить его работать?
Заранее спасибо.
Возврат типа вычитания работает только во время компиляции. Вам нужно нечто вроде 'boost :: any'. –
Нет, это не работает. С 'auto' ** компилятор ** выведет правильный тип возврата, но он должен быть последовательным (если вы не хотите идти с' QVariant' ...) –
@AdrianoRepetti благодарит! Я полностью забыл о «QVariant», который должен работать для меня. – Moomin