У меня есть кусок кода, довольно похожее на это:Bind полукокса к перечислимому типу
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;
}
}
}
};
Теперь представьте, у меня есть гораздо больше типов перечислений и их имена больше .... хорошо, что я получаю это не очень хорошо выглядит код и мне было интересно, если это возможно, чтобы связать конкретный символ к типу перечислений и, возможно, сделать что-то вроде этого:
for(int i=0;i<Full.size();i++)
{
cout<(Full[i]).MyChar();
}
или любой другой метод, который мог бы сделать этот код «симпатичнее». Возможно ли это?
Вы всегда можете иметь 'зОго :: Карты', но я не убедитесь, что код окажется более чистым с таким небольшим набором значений. По крайней мере, вы можете инкапсулировать преобразование внутри функции, чтобы ее можно было повторно использовать. –
cdhowie
«std :: map» кажется излишним, достаточно простого массива: 'cout <<" SME "[Full [i]]'. (Это все еще нуждается в улучшениях для управляемости и безопасности.) – hvd
Может быть также и для заголовка #define. #define START 'S' ... –