我有一个名为StackID
的枚举,在我的代码中,我必须static_cast
到int
相当多 - 例如。
StackID somestack;
int id = static_cast<int>(somestack);
是否有一种替代方法可以反复进行此类演员?我听说过“隐式”转换 - 这是我可以在这里使用的吗?
(可能与this question相关)
答案 0 :(得分:10)
你应该使用一些东西吗?可能不是。如果你正在使用enum强制转换为int,我会质疑你是否正确使用枚举(或者如果你必须与遗留API接口。)据说你不有到static_cast枚举到整数。这自然会发生。
请参阅MSN关于枚举的this文章和enum-&gt; int和int-&gt;枚举(您必须使用static_cast。)
答案 1 :(得分:1)
是否有一种替代方法可以反复进行此类演员?
嗯,你不知道吗,这是你的幸运日!因为,是的,有一种更简单的方法:
int id = somestack;
任何enum
值都可以隐式转换为int
。
无论如何,关于这个问题的两个问题,我会加入有关的声音,询问enum
是否真的是你想要的。 (我不是说它在绞尽脑汁,我对你的问题知之甚少。但据我所知,这似乎有问题。)
答案 2 :(得分:0)
默认情况下,枚举值将从零开始并继续增加。 基本上,枚举常量本身是整数常量。 不需要明确地将它们强制转换为int。 当我们想要使用唯一值表示多个常量(如错误代码)而不是#define语句时,我们可以使用Enum。