Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何重载操作员>;对于作用域枚举?_C++_Enums_Operators - Fatal编程技术网

C++ 如何重载操作员>;对于作用域枚举?

C++ 如何重载操作员>;对于作用域枚举?,c++,enums,operators,C++,Enums,Operators,以下代码导致操作员出现不明确的过载错误: enum class MyEnum {first, second}; bool operator > (MyEnum lhs, MyEnum rhs) { return static_cast<uint32_t>(lhs) > static_cast<uint32_t>(rhs); } MyEnum e1, e2; auto result = e1 > e2; enum类MyEnum{first,seco

以下代码导致操作员出现不明确的过载错误

enum class MyEnum {first, second};
bool operator > (MyEnum lhs, MyEnum rhs)
{
   return static_cast<uint32_t>(lhs) > static_cast<uint32_t>(rhs);
}
MyEnum e1, e2;
auto result = e1 > e2;
enum类MyEnum{first,second};
布尔运算符>(MyEnum lhs、MyEnum rhs)
{
返回静态_-cast(lhs)>静态_-cast(rhs);
}
髓鞘e1、e2;
自动结果=e1>e2;

是否可以为作用域枚举重载运算符
?如果是这样,我做错了什么?

我可以用VS2015重现错误。但是我不明白为什么创建自定义操作符而不使用内置操作符:

#include <iostream>
using namespace std;

enum class MyEnum { first, second };
//bool operator > (MyEnum lhs, MyEnum rhs)
//{
//  return static_cast<uint32_t>(lhs) > static_cast<uint32_t>(rhs);
//}

int main()
{
    MyEnum e1 = MyEnum::first, e2 = MyEnum::second;
    auto result = e1 > e2;
}
#包括
使用名称空间std;
枚举类MyEnum{first,second};
//布尔运算符>(MyEnum lhs、MyEnum rhs)
//{
//返回静态_-cast(lhs)>静态_-cast(rhs);
//}
int main()
{
MyEnum e1=MyEnum::first,e2=MyEnum::second;
自动结果=e1>e2;
}

该代码还使用GCC4.9.2(C++14)编译:

请帮助我们帮助您并提供一个解决方案。我无法重现错误。抱歉,我以为编译器找不到内置运算符,这意味着我必须强制转换为整数,但再试一次,效果很好。非常感谢您这么快的回复。对不起,浪费了你的时间。