有没有办法让运算符=枚举?

Adr*_*ian 2 c++ enums operator-overloading assignment-operator c++11

我有一个枚举,但我希望有一个赋值运算符,以便能够分配一个不是原始枚举的类型.例如

enum class X : int
{
  A, B, C, D
}

enum class Y : char
{
  A, B, C, D
}

Y& operator=(Y& lhs, X rhs)
{
  return Y = static_cast<Y>(X);
}
Run Code Online (Sandbox Code Playgroud)

但我得到了一个'operator =' must be a non-static member.有没有办法做到这一点?

Bri*_*ian 7

您不能因为错误消息告诉您,因为operator=只能是非静态成员函数,并且枚举不能包含成员.如果你真的想要从不同的枚举中分配,也许你应该只是Y上课.另一种可能性是编写辅助函数来执行赋值.