【发布时间】:2013-06-13 19:40:53
【问题描述】:
我有一段与此非常相似的代码:
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();
}
或任何其他可以使此代码“更漂亮”的方法。 这可能吗?
【问题讨论】:
-
你总是可以有一个
std::map<Section, char>,但我不确定用这么小的一组值代码会变得更干净。至少您可以将转换封装在一个函数中,以便您可以重用它。 -
std::map在这里似乎有点矫枉过正,一个简单的数组就足够了:cout << "SME"[Full[i]]。 (这仍然需要改进可管理性和安全性。) -
也可能是#define 标头的情况。 #define START 'S' ...
标签: c++ coding-style enums char