【发布时间】:2016-07-24 13:28:33
【问题描述】:
我有一个枚举,但我想要一个赋值运算符,以便它能够分配一个不是原始枚举的类型。例如
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。有没有办法做到这一点?
【问题讨论】:
-
我无法想象一个好的用例。你能帮帮我吗?
-
@BarryTheHatchet,我正在尝试更新一些过时的代码。他们在两个不同的地方使用相同的常量,但在一个地方,它的大小为 1 字节,另一个大小为 2。我宁愿不改变结构的二进制兼容性,以防破坏某些东西。跨度>
-
如果您将原始代码称为过时的,我猜它没有使用
enum class,我猜这是您所做的修改。那是对的吗?如果是这样,是否也可以接受不使用enum class的替代方案? -
@hvd,它使用
int和char,甚至不是枚举。 -
那么布赖恩的回答正是我会发布的。如果我是你,我会放弃
enum class,没有它你可以实现你想要的。
标签: c++ c++11 enums operator-overloading assignment-operator