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

时间:2016-02-11 21:26:18

标签: c++ enums

我遇到了以下代码: -

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

};

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

MyClass obj1;

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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

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

MyClass mm;
MyClass::ITEMS it = mm;