我想补充返回枚举的函数:
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;} }
答案 0 :(得分:7)
因为返回类型不在类的词法范围内。如果您有支持它的C ++ 11感知编译器,请使用尾随返回类型(也称为后期指定的返回类型):
auto myClass::getRest() -> res{ return _res; }
->
之后的部分(事实上,甚至是参数列表)已经属于该类的词法范围,因此不需要任何资格。