举个例子,我有一个类,我存储关于二进制文件的一些信息:字符串池/实习 - 这是一个好习惯吗?
class car {
char car_manufacturer;
//other stuff
};
凡car_manufacturer
的值是值之一:
enum car_manufacturers : char {
VOLVO = 0,
AUDI,
MERCEDES
};
现在这个例子应用中,用户都希望他们的汽车制造商的字符串表示,而不是一个号码,所以我创建一个枚举,其中阵列的顺序是一样的枚举的字符串表示的数组,所以car_manufacturer
可以用作数组索引
std::string car_manufacturers_strings[MERCEDES + 1] = {
"Volvo",
"Audi",
"Mercedes"
};
所以现在加载该文件,并创建一个car
对象出来的数据后,我可以简单地通过car_manufacturers_strings[car.car_manufacturer];
该方案的优点得到了汽车的品牌,作为一个字符串在于,在文件中,我不必存储大量重复的字符串,如果汽车是相同的,因此我可以节省很多空间。但是这样做的缺点是代码稍微复杂一点。
那么这是好还是不好的做法?
你可以在你的类中添加一个方法来做到这一点。然后,这些字符串以与制造商枚举相同的顺序存储在数组中的事实是对用户隐藏的实现细节。 – MicroVirus 2014-09-02 11:09:32
@MicroVirus这与我在应用程序中实现的完全一样,汽车是一个类比。实际上,我确实实现了相同的'car.get_car_manufacturer_name();' – user3680400 2014-09-02 11:12:32