是否有一直使用static_cast <int>的替代方法?</int>

时间:2010-08-21 14:56:02

标签: c++

我有一个名为StackID的枚举,在我的代码中,我必须static_castint相当多 - 例如。

StackID somestack;
int id = static_cast<int>(somestack);

是否有一种替代方法可以反复进行此类演员?我听说过“隐式”转换 - 这是我可以在这里使用的吗?

(可能与this question相关)

3 个答案:

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