Mam niezalogowane wyliczenie strony trzeciej (którego nie mogę zmodyfikować), które bardzo chciałbym rzucić na moje własne wyliczenie. Jak mogę zapewnić coś w rodzaju operatora konwersji?Jak obsypać wyrazy?
Co chciałbym zrobić coś takiego:
#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;
}
Czy istnieje sposób, aby zapewnić pewnego rodzaju odlewy z ThirdPartyNumber
do MyNumber
?
Co było wyjście pan oczekiwał z obsadą? – user
Cóż, chciałbym, aby obsada przekształciła ThirdPartyLetter :: A na MyNumber :: ONE, a ThirdPartyLetter :: B na MyNumber :: TWO. Tak więc moje oczekiwane wyniki wyniosłyby 1. –