Mam kawałek kodu, całkiem podobny do tego:Bind char do typu enum
class someclass
{
public:
enum Section{START,MID,END};
vector<Section> Full;
void ex(){
for(int i=0;i<Full.size();i++)
{
switch (Full[i])
{
case START :
cout<<"S";
break;
case MID :
cout<<"M";
break;
case END:
cout<<"E";
break;
}
}
}
};
Teraz wyobraź sobie, mam znacznie więcej typów enum i ich nazwy są już .... dobrze co ja dostać nie jest to bardzo dobry kod patrząc i zastanawiałem się, czy to możliwe, aby powiązać konkretny char do typu enum i może zrobić coś takiego:
for(int i=0;i<Full.size();i++)
{
cout<(Full[i]).MyChar();
}
lub jakiejkolwiek innej metody, które mogłyby uczynić ten kod „ładniejszy”. Czy to możliwe?
Można zawsze mają 'std :: map', ale nie jestem pewien, że kod byłby czysty z tak małym zestawem wartości. Przynajmniej można zamknąć konwersję wewnątrz funkcji, dzięki czemu można jej ponownie użyć. –
cdhowie
"Std :: map" wydaje się tu przesadzony, wystarczy prosty zbiór: 'cout <<" SME "[Full [i]]'. (To wciąż wymaga ulepszeń w zakresie możliwości zarządzania i bezpieczeństwa.) – hvd
Może to być również przypadek dla nagłówka #define. #define START 'S' ... –