c++ - 有没有办法让 operator= 用于枚举?

标签 c++ c++11 enums operator-overloading assignment-operator

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

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);
}

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

最佳答案

你不能,因为正如错误消息告诉你的那样,operator= 只能是一个非静态成员函数,而枚举不能有成员。如果您真的希望能够从不同的枚举中进行分配,也许您应该将 Y 设为一个类。另一种可能性是编写辅助函数来执行分配。

关于c++ - 有没有办法让 operator= 用于枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36412256/

相关文章:

iphone - 如何在 iPhone 4 上使用 Library Eigen

c++ - 包含充当标识符的类的类的容器结构

c++ - std::shared_ptr 的实例化类型丢失 const

c++ - 使用参数包扩展调用具有可变参数的函数,但修改第 i 个参数

c# - 为什么在使用枚举代替其基础类型时必须使用显式强制转换?

c++虚拟方法未被调用

c++ - boost 目录以包含访问者设计模式

c++ - std::hash 是否保证在 stdlib 发行版中相同

java - 从 kotlin 调用的第三方 java 库中的重载解决歧义

将枚举键与各种键进行比较的 Swift 最佳实践