【发布时间】:2011-09-05 18:14:20
【问题描述】:
有没有办法重载强制转换运算符以在两个枚举之间进行转换?
在我的代码中
enum devStatus
{
NOT_OPERATING,
INITIALISING,
DEGRADED,
NORMAL
};
enum dataStatus
{
UNAVAILABLE = 1,
DEGRADED,
NORMAL
}
其中 NOT_OPERATING 和 INITIALISING 映射到 UNAVAILABLE; DEGRADED 和 NORMAL 映射直接穿过。这些由外部接口修复。
我正在寻找一种在 devStatus 和 dataStatus 之间进行转换的方法,并且希望能够编写如下内容:
devStatus devSts;
getDeviceStatus(&devSts);
dataStatus dataSts = (dataStatus)devSts;
我知道如果这些是类,我可以写 devStatus::operator dataStatus() 来做到这一点。有没有办法为枚举做到这一点?
我可以有一个免费的功能
dataStatus devStatus2dataStatus(const devStatus& desSts)
【问题讨论】: