从成员函数返回enum

Return enum from member function

本文关键字:enum 返回 函数 成员      更新时间:2023-10-16

我想实现返回enum的函数:

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

为什么enum返回类型应该由作用域指定,而作为实参,enum的类型范围是不必要的——下面的工作正常:

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

因为返回类型不在类的词法作用域中。如果您有支持c++ 11的编译器,请使用末尾返回类型(也称为后指定返回类型):

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

->之后的部分(事实上,甚至参数列表)已经属于类的词法作用域,因此不需要限定条件。