可以"自动功能()"在函数体内有几种类型的返回?

时间:2015-12-11 02:50:02

标签: c++ c++11 auto

我遇到下面的代码问题,它会产生错误,我相信是因为显然" auto"不能根据条件处理几种类型的退货。 这是我的代码的情况还是其他什么问题? 另外,如果我想做的事情不可能这样,那么可以用其他任何方式吗?

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

2 个答案:

答案 0 :(得分:2)

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

  

如果具有包含占位符类型的声明返回类型的函数具有多个return语句,则会为每个return语句推导出返回类型。 如果推断的类型在每次扣除中不相同,则该程序格式不正确。

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

答案 1 :(得分:1)

auto表示“为我设计类型”,而非“接受任何类型”。没有(内置)类型可以声明此函数,因此auto无效