将int转换为枚举

时间:2011-11-01 23:24:04

标签: c++

我有object,其中一个属性为object.type,当我返回object.type时,它返回2,但我宁愿返回{{1}的枚举例如2

soft

4 个答案:

答案 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)

请不要使用枚举。

您可以转到http://well-spun.co.uk/code_templates/enums.php

并使用编译器确保您做正确的事。