我想实现返回枚举的函数:
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;} }
最佳答案
因为返回类型不在类的词法范围内。如果您有支持它的 C++11 感知编译器,请使用尾随返回类型(也称为后期指定返回类型):
auto myClass::getRest() -> res{ return _res; }
->
之后的部分(事实上,甚至是参数列表)已经属于该类的词法范围,因此不需要限定。
关于c++ - 从成员函数返回枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8544317/