【发布时间】:2019-07-26 17:04:47
【问题描述】:
我正在尝试为 Enum 类重载一些运算符。 我收到一个编译器错误,说它无法找到运算符
在 Enum.h 中
enum class SomeEnum : unsigned
{
Test0 = 0,
Test1 = (1 << 0),
Test2 = (1 << 1),
};
在 Enum.cpp 中
#include "Enum.h"
#include <type_traits>
SomeEnum operator|(SomeEnum lhs, SomeEnum rhs)
{
return static_cast<SomeEnum > (
static_cast<std::underlying_type<SomeEnum >::type>(lhs) |
static_cast<std::underlying_type<SomeEnum >::type>(rhs)
);
}
在 main.cpp 中
#include "Enum.h"
int main()
{
SomeEnum blah = SomeEnum::Test1 | SomeEnum::Test2;
}
编译器吐出一个错误说: 'operator|' 不匹配(操作数类型为 'SomeEnum ' 和 'SomeEnum ')
【问题讨论】:
标签: c++11 operator-overloading enum-class