我想知道是否有任何方法可以将整数传递给需要枚举类型的函数。
我需要使用这个函数:void SetValue(enumtypevalue){ variable = value}它是由一个同事制作的,枚举是这样的:
typedef enum
{
Obj1 = 0,
Obj2 = 1,
...
Objn = m,
}enumtype;
Run Code Online (Sandbox Code Playgroud)
问题是这个函数在我在我的程序中使用的库中,在那里我知道枚举的数量但不知道名称(Obj1,Obj2 ...)所以我想知道是否可以做类似的事情SetValue(4)而不是SetValue(Obj1)这样我的伙伴不必覆盖/更改它,我不必硬编码所有枚举(这并不小)。
我知道假装传递一种类型而不是另一种类型听起来很愚蠢,但是如果您将 'Obj1' 传递给函数,就像说 '0' 一样,因为它们是相关的,所以这就是我提出这个“傻瓜”问题的原因。
谢谢。
您可以使用 static_cast 将整数转换为枚举类型,例如
SetValue(static_cast<enumtype>(4));
Run Code Online (Sandbox Code Playgroud)
不过,这是一个无法维护的最后手段。枚举的部分意义在于拥有比裸整数常量更有意义的东西。使用它们是一件好事的另一个原因是因为某些原因可能需要更改整数常量,然后很难找到调用函数的代码中使用常量的所有位置并相应地更改它们。
你不能通过#include-ing 某个地方的头文件来访问枚举类型吗?
| 归档时间: |
|
| 查看次数: |
2200 次 |
| 最近记录: |