"auto function()" 可以在函数体内有几种类型的 return 吗?

can "auto function()" have several types of return inside the function body?

我在使用下面的代码时遇到问题,它会产生错误,我相信这是因为显然 "auto" 无法根据条件处理多种类型的 return。 是这种情况还是我的代码有其他问题? 另外,如果我尝试做的事情无法通过这种方式实现,那么可以通过其他方式实现吗?

auto Game_Manager::getMember(string s)
{
    if (s == "rows")return rows; // return unsigned
    else if (s == "columns")return columns; // return unsigned
    else if (s == "p1")return p1; //return string
    else if (s == "p2")return p2; //return string
    else cout << "\n\nERROR!!! Invalid argument for getMember()\n\n" << endl;
    return 1;
}

auto 表示 "work out the type for me",而不是 "accept any type"。没有可以将此函数声明为的(内置)类型,因此 auto 无效

这是感兴趣的规则(来自标准的第 7.1.6.4 节)

If a function with a declared return type that contains a placeholder type has multiple return statements, the return type is deduced for each return statement. If the type deduced is not the same in each deduction, the program is ill-formed.

因此,所有 return 语句必须具有相同的类型。