C++函数,使用'auto'变量返回类型



我正在尝试编写一个根据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. 警告:"parseParameterValue"函数使用"auto"类型说明符而不使用尾随返回类型
  2. 第二次返回时出错:"自动"的扣除不一致:"int",然后是"double"

有没有办法让它工作?

提前谢谢。

不,一个函数只能有一个返回类型。

请注意,函数返回类型的处理必须在编译时进行,但函数使用的值在运行时之前无法知道。

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

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

最新更新