从成员函数返回枚举

时间:2011-12-17 11:13:12

标签: c++ enums

我想补充返回枚举的函数:

class myClass{
    private:
    res _res;
    public:
    enum res{ok,fail};
    res getRes()
    bool checkRes(res r);
    //other function that change _res value
    }

此实现会生成编译错误:

res myClass::getRes(){return _res;}

但以下情况还可以:

myClass::res myClass::getRes(){return _res;}

为什么枚举返回类型应由范围指定 ,虽然作为参数类型的枚举范围不是必需的 - 以下工作正常:

 bool myClass::checkRes(res r){
     if (_res == r){retun true;}
     else {return false;} }

1 个答案:

答案 0 :(得分:7)

因为返回类型不在类的词法范围内。如果您有支持它的C ++ 11感知编译器,请使用尾随返回类型(也称为后期指定的返回类型):

auto myClass::getRest() -> res{ return _res; }

->之后的部分(事实上,甚至是参数列表)已经属于该类的词法范围,因此不需要任何资格。