【发布时间】:2012-02-02 11:39:24
【问题描述】:
我当前的程序使用 3 个不同的枚举:
enum ThingEnum{
Thing1 = 0,
Thing2 = 1,
Thing3 = 2,
OtherThing = 3
};
enum ReturnEnum {
Success = 4,// the method did what it is supposed to
Error1 = 5,// an error occured
Error2 = 6,// an error occured
Error3 = 7,// an error occured
Error4 = 8,// a fatal error occured program must terminate
Pointer = 9// the method may need to be called again
};
enum TypeEnum {
Type1 = 10,
Type2 = 11,
Type3 = 12,
Type4 = 13,
OtherType = 14
};
我想要做的是创建一个全局函数,它接受一个枚举并返回一个字符串(因为枚举的值实际上只是一个始终具有值的专用变量名)。 是否可以创建一个采用通用枚举的函数? 例如
string enumToString (enum _enum){}
或者我必须为每个不同的枚举创建一个函数吗?只是一个可能的想法,我做了一些阅读,一些编译器允许 Enum 解析为 int,所以我可以将 enum 作为 int 传递然后使用它吗?
【问题讨论】:
-
那么您想要做的是将枚举值转换为字符串吗?也许您应该修改问题标题...
-
as the value of an enum is really just a specialized variable name that always has a valuewhut -
@Lightness 当编译器读取枚举 Ex{this, thisTo};它将为它们生成值(除非它们被设置为特定值),但是要访问它们,您需要使用表示该值的名称,就像使用解析运算符来获取类中的确切方法一样。正如关于枚举的文献将指出“枚举将解析为特定值(一个 int 地址),但即使该值已知,反向转换也永远不会解析”
-
@gardian06:是的,我知道枚举是什么,谢谢。我想知道引用的段落到底是什么意思。
-
@LightnessRacesinOrbit 这意味着您可以使用与在 C 中可以使用 #define CONST_THING = 0x0A 相同的枚举,并且每次使用 CONST_THING 时,它都会始终解析为该值。与 enum Ex{this, thisTo} 每次使用 thisTo 时相同的方式,它总是会解析为分配给它的值(假设范围),因此 Ex 是一个专用变量,而 thisTo 是它的值。是的,更好的说法可能应该是“因为枚举实际上只是一个具有预设已知值的专用变量”