c++ - 从成员函数返回枚举

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

最佳答案

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

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

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

关于c++ - 从成员函数返回枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8544317/

相关文章:

c++ - C/C++ Makefile : How to build dependencies between with . c文件和其他目录下的目标文件?

java - 使用附加函数扩展 Java Enum

mysql - 在 MySQL 中创建 ENUM 变量类型

在带有 VS2012/w Update 3 的 Windows 7 上构建的 C++ 程序无法在 WinXP SP3 上运行

swift - 如何通过忽略 Swift 中的关联值来比较枚举与关联值?

c# - 如何在 .NET 类库中创建 "abstract"枚举?

delphi - 如何将匿名枚举类型传递到子例程中?

c++ - LTO 与 LLVM 和 CMake

c++ - 标准容器是否提供一些缓存功能?

c++ - Keil:虚拟或 protected 析构函数和堆