我有object
,其中一个属性为object.type
,当我返回object.type
时,它返回2
,但我宁愿返回{{1}的枚举例如2
soft
答案 0 :(得分:3)
通常最简单(也是最正确)的方式可能是使用std::map
:
enum MyEnum {A, B, C};
std::map<MyEnum, std::string> myEnumDesc;
MyEnumDesc[A] = "A";
...
// Then
std::cout << myEnumDesc[object.type] << std::endl;
(如果type
的类型为MyEnum
)。还有其他替代方案,或多或少都是便携式的,但你对此很安全。
答案 1 :(得分:0)
枚举是一个int,而不是一个字符串。
如果soft
是你所调用的枚举成员,那么soft
就像一个const int,它的值可以是3。
你可以有一个map(stl,http://www.cplusplus.com/reference/stl/map/),其中int为键,string为value,然后将值映射到名称。然后你可以在你的类中使用一个方法而不是属性(例如getTypeName
),并且该方法可以返回与当前类型值相对应的字符串名称,而不是枚举常量本身。
答案 2 :(得分:0)
您在寻找流媒体运营商吗? (显然,这是便携式代码)
在此处观看此活动:http://ideone.com/eRniK
std::ostream& operator<<(std::ostream& os, const type v)
{
switch (v)
{
case soft: return os << "soft";
case brittle: return os << "brittle";
case hard: return os << "hard";
default: return os << "#" << v;
}
return os << "<error>";
}
现在
type x = hard;
std::cout << x << std::endl;
将打印'硬'
答案 3 :(得分:-3)