重载类 - C++ 中枚举的 () 运算符
Overloading the () operator for an enum in a class - C++
我遇到了以下代码:-
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;
相关文章:
- 如何正确实现和访问运算符的各种自定义枚举器
- 标准::可选枚举的比较运算符
- 我在 .h 中有一个枚举类,并且在.cpp错误中有一个运算符重载:与"运算符<<不匹配
- 隐式不是带有枚举解释的运算符 (!)?
- 枚举和二进制或运算符(MISRA C++ 2008,4-5-2)
- 重载 std::字符串运算符+ 用于打印枚举名称
- 错误:表达式必须具有算术、无作用域枚举或带有运算符重载的指针类型
- 枚举类上的运算符+,起始值不为零
- 重载输入 (>>) 运算符以获取枚举字符串
- 枚举后位运算符上的重载相等运算符
- 枚举运算符不工作
- 枚举的复合赋值运算符真的应该根据其关联的算术运算符来定义吗?
- 枚举增量的运算符重载
- 类中枚举类的运算符重载
- C++11 类中放置的枚举类的重载运算符
- 根据运算符中的枚举值推断类型
- 如何重载枚举的<<运算符
- 枚举类型的重载>>运算符(工作日)
- 为什么可以使用范围运算符和类 A 名称在类 B 中访问类 A(公共)中的枚举
- 模板化 QDataStream 运算符<<用于枚举