假设我有一个类A
和一个数据成员info
,该成员是用户定义的enum
类型。
info
使我可以通过在A
上使用switch
来推断出在使用类info
时需要的许多信息。例如,我可能想获得string
的{{1}}版本,更通用的info
(将几个short_info
值分组在相同的info
值下)等
这是我可以想象的两种方法,我了解它们各自的优缺点:
short_info
中创建在A
上执行switch
的方法info
中的数据成员更少,因此存储空间更少A
发生更改时更新的数据成员这两种方法之一通常更好吗?它是否取决于info
数据成员是否可以在初始化之后进行修改或其他因素?
还是有更好的方法呢?
答案 0 :(得分:1)
这两种方法中的一种通常更好吗?
不是。他们俩似乎都不好。
或者有更好的方法吗?
是的。将info
的类型设为以该数据作为成员的类。
例如代替
enum Info {
info1,
info2
};
class A {
Info info;
string info_desc() const; // switch on info
ShortInfo info_abbr() const; // another switch
};
您却拥有
class Info {
string desc;
ShortInfo abbr;
}
Info info1 { "first info", ShortInfo::first };
Info info2 { "second info", ShortInfo::other };
class A {
Info info;
}; // Does this do anything anymore?