我遇到了以下代码: -
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()
吗?如果我尝试的话,我会收到编译错误。
答案 0 :(得分:3)
operator ITEMS (){...}
是目标类型ITEMS
的强制转换重载。当您将MyClass
的实例强制转换为MyClass::ITEMS
类型时,会返回类成员item
。
答案 1 :(得分:2)
它允许您从类型MyClass
的对象转换为ITEMS
类型的变量,例如:
MyClass mm;
MyClass::ITEMS it = mm;