使用 'auto' 变量 return 类型的 C++ 函数

C++ function with variable return type using 'auto'

我正在尝试编写一个 returns 各种类型的函数,具体取决于 if 语句。

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;
    }
}

不幸的是我得到的是:

  1. Warning: 'parseParameterValue' function uses 'auto' type specifier without trailing return type
  2. Error at second return: inconsistent deduction for 'auto': 'int' and then 'double'

有什么办法让它起作用吗?

提前致谢。

不可以,一个函数只能有一个return类型。

请注意,函数 return 类型的处理必须在编译时发生,但您的函数使用的值要到 运行 时间才能知道。

您可以 return 擦除类型,例如 boost::any,它可以存储任何类型。您的代码将如下所示

boost::any parseParameterValue(QString aParameterValueString, int aParameterType)
{
    switch(aParameterType) {
    default: return {aParameterValueString};
    case 0:  return {aParameterValueString.toInt()};
    case 1:  return {aParameterValueString.toDouble()};
    }
}