重载类 - C++ 中枚举的 () 运算符

Overloading the () operator for an enum in a class - C++

本文关键字:运算符 枚举 C++ 重载      更新时间:2023-10-16

我遇到了以下代码:-

class MyClass{
public:
    enum ITEMS {
        ZERO = 0,
        ONE,
        TWO,
        THREE
    };
    enum ITEMS item;
    MyClass():item(THREE){}
    MyClass(ITEMS item):item(item){};
    operator ITEMS () {
        return item;
    }
};

我无法弄清楚枚举项上的运算符()重载是做什么的。如何在 MyClass 类型的对象的上下文中使用它?假设我们有一个对象:-

MyClass obj1;

我们可以做obj1.VALUES()吗?如果我尝试这样做,我会收到编译错误。

operator ITEMS (){...} 是目标类型 ITEMS强制转换重载。当你将MyClass的实例强制转换为类型 MyClass::ITEMS 时,将返回类成员item

它允许您从类型为 MyClass 的对象转换为类型为 ITEMS 的变量,例如:

MyClass mm;
MyClass::ITEMS it = mm;