【发布时间】:2015-03-06 11:01:06
【问题描述】:
我正在尝试编写一个根据 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;
}
}
不幸的是,我得到的是:
- 警告:“parseParameterValue”函数使用“auto”类型说明符,没有尾随返回类型
- 第二次返回时出错:'auto' 的扣除不一致:'int' 然后是 'double'
有没有办法让它工作?
提前致谢。
【问题讨论】:
-
返回类型推导仅在编译时起作用。你需要像
boost::any这样的东西。 -
不,它不是那样工作的。使用
autocompiler 会推断出正确的返回类型,但它必须是一致的(除非你想使用QVariant...) -
@AdrianoRepetti 非常感谢!我完全忘记了
QVariant- 这应该对我有用。
标签: c++ auto return-type-deduction