c++ - 是否可以手动定义枚举类的转换?

标签 c++ enums c++11 enum-class

通常,您可以使用以下语法为类定义强制转换:

class Test {
public:
  explicit operator bool() { return false; }
};

对于 enum 类,有没有办法做到这一点或类似的事情?

最佳答案

不,不是。

实际上,enum class 根本就不是类。 class 关键字仅用于因为突然将无范围的 enum 更改为有范围的 enum 将意味着重新处理 all 枚举代码。所以委员会决定为了区分新式和旧式枚举,新的将用 class 标记,因为它已经是一个关键字,所以没有 enum 可以有在 C++ 中被命名为 class。他们本可以再选一个,反正也没有意义。

然而,尽管有 class 关键字,它们仍然是常规枚举,因为括号内只允许使用枚举数(以及可能分配给它们的值)。

关于c++ - 是否可以手动定义枚举类的转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12753543/

相关文章:

c++ - 通过不同的线程使用 QTcpSockets

c++ - queue<T> 上的原子操作?

Swift:在switch中初始化后获取子类变量

Swift 递归枚举

c++ - 模板和接口(interface)的多重继承问题

c++ - 根据编译时条件定义不同的成员函数

java - 在 Java 中,为什么可以用另一个枚举常量来限定一个枚举常量?

multithreading - OS X libstdc++可以防止boost::thread中断?

c++ - 是否可以使用 SFINAE 检测类方法的常量性?

c++ - 如何正确声明通用排序算法?