将整数而不是枚举类型传递给函数

时间:2015-06-19 14:23:37

标签: c++ enums

我想知道是否有办法将整数传递给期望枚举类型的函数。

我需要使用这个函数:void SetValue(enumtypevalue){ variable = value}由工作伙伴制作,枚举类似于:

typedef enum
{
   Obj1 = 0,
   Obj2 = 1,
   ...
   Objn = m,
}enumtype;

问题是这个函数在我在我的程序中使用的库上,我知道枚举的数量而不是名称(Obj1,Obj2 ......)所以我想知道是否可以做类似的事情SetValue(4)代替SetValue(Obj1)所以我的配偶不必覆盖/更改它,我也不必硬编码所有枚举(这不小)。

我知道假装传递一种类型而不是另一种类型听起来很愚蠢但是如果你通过了“Obj1”这样的话。它的功能就是说' 0'因为它们是相关的,所以我为什么要做这个“傻瓜”。问题

感谢。

1 个答案:

答案 0 :(得分:3)

您可以使用static_cast将整数转换为枚举类型,例如

SetValue(static_cast<enumtype>(4));

但这是一个不可持续的最后手段。枚举的部分要点是比裸整数常量更有意义。使用它们的好处的另一个原因是因为整数常量可能由于某种原因需要更改,然后很难找到所有在调用的代码中使用常量的地方功能并相应地改变它们。

您是否可以通过#include某个地方的头文件来访问枚举类型?