使用 '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;
}
}
不幸的是我得到的是:
- Warning: 'parseParameterValue' function uses 'auto' type specifier without trailing return type
- 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()};
}
}
我正在尝试编写一个 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;
}
}
不幸的是我得到的是:
- Warning: 'parseParameterValue' function uses 'auto' type specifier without trailing return type
- 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()};
}
}