我可以在枚举中放置一个强制转换操作符来将其转换为其他类型吗?

时间:2011-08-23 18:21:13

标签: c++ casting

例如,如果我有:

enum SomeEnum { One, Two, Three };

并且我希望能够直接将枚举作为无符号整数或字符串获取,我是否可以编写一个能够查看枚举值并为其返回合适表示的转换运算符?

我知道你可以用课程来做这件事,但我不确定你是否可以用枚举来做。

3 个答案:

答案 0 :(得分:3)

枚举可以转换为整数,甚至不需要强制转换。然而,没有办法自动将其转换为字符串。

如果您愿意并行执行字符串数组,可以使用枚举轻松地对其进行索引;唯一的问题是,如果您在进行更改时不小心修改它们,它可能会失去同步。

char * SomeEnumNames[] = { "One", "Two", "Three" };

cout << SomeEnumNames[One] << endl; // should output "One"

答案 1 :(得分:0)

不,这是不可能的,你只能用类来做。您需要编写一个函数来将枚举值转换为字符串或其他任何内容。

请注意,枚举值可以自己显式地转换为int

答案 2 :(得分:0)

是的,您可以将枚举强制转换为如下整数类型:

int someInt = (int)someEnumValue;

默认情况下,枚举将从0开始并为每个值递增,除非您专门为每个枚举设置整数值。您可以将整数值分配给这样的枚举:

public enum SomeType
{
   FirstValue = 1,
   SecondValue = 3,
   ThirdValue = 5
}