это моя первая попытка использовать классы enum для моих проектов, но у меня проблема в том, что я не могу скомпилировать свой код, если класс enum размещен внутри другого класса.
Я пытаюсь определить перегрузку оператора, как в моем примере, и я пытаюсь сделать это и снаружи.
Все работает нормально, если я помещаю enum-класс за пределы класса.
В чем дело? Как перегрузить оператор, если я, что бы использовать его, поместил в класс?
#include <cstdint>
namespace MyNamespace
{
class MyClass
{
public:
enum class MyEnum_t
{
VALUE_0 = 0x0,
VALUE_1 = 0x1,
VALUE_2 = 0x2,
VALUE_3 = 0x4,
VALUE_4 = 0x8
};
inline MyEnum_t &operator|(MyEnum_t lhs, MyEnum_t rhs)
{
return static_cast<MyEnum_t>(static_cast<std::uint8_t>(lhs) | static_cast<std::uint8_t>(rhs));
}
}
int main()
{
MyNamespace::MyClass::MyEnum_t test = MyNamespace::MyClass::MyEnum_t::VALUE_0;
test = MyNamespace::MyClass:MyEnum_t::VALUE_1 | MyNamespace::MyClass::MyEnum_t::VALUE_2;
return 0;
}