【发布时间】:2017-01-07 22:21:31
【问题描述】:
我有一个第三方无范围枚举(我无法修改),我真的很想将其转换为我自己的范围枚举。我怎样才能提供类似转换运算符的东西?
我想做的是这样的:
#include <iostream>
enum ThirdPartyLetter {
A=4,
B=5
};
enum class MyNumber {
ONE=1,
TWO=2
// This doesn't compile, of course
/*Number(const ThirdPartyLetter& rhs) {
if(rhs == ThirdPartyLetter::A) {
return ONE;
}
else {
return TWO;
}
}*/
};
int main() {
ThirdPartyLetter letter = ThirdPartyLetter::A;
MyNumber number = static_cast<MyNumber>(letter);
// Without the cast, this prints 4 (an invalid enum value!)
std::cout << int(number) << std::endl;
}
有没有办法提供从ThirdPartyNumber 到MyNumber 的某种类型转换?
【问题讨论】:
-
您对演员阵容的期望是什么?
-
好吧,我希望演员将 ThirdPartyLetter::A 转换为 MyNumber::ONE,并将 ThirdPartyLetter::B 转换为 MyNumber::TWO。所以我的预期输出是 1。