Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将整数而不是枚举类型传递给函数_C++_Enums - Fatal编程技术网

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

C++ 将整数而不是枚举类型传递给函数,c++,enums,C++,Enums,我想知道是否有任何方法可以将整数传递给需要枚举类型的函数 我需要使用这个函数:void SetValue(enumtypevalue){variable=value},它是由工作伙伴创建的,枚举类似于: typedef enum { Obj1 = 0, Obj2 = 1, ... Objn = m, }enumtype; 问题是,这个函数位于我在程序中使用的库中,我知道枚举的编号,但不知道名称(Obj1,Obj2…),因此我想知道是否可以执行类似SetValue(4)的

我想知道是否有任何方法可以将整数传递给需要枚举类型的函数

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

typedef enum
{
   Obj1 = 0,
   Obj2 = 1,
   ...
   Objn = m,
}enumtype;
问题是,这个函数位于我在程序中使用的库中,我知道枚举的编号,但不知道名称(Obj1,Obj2…),因此我想知道是否可以执行类似
SetValue(4)
的操作,而不是
SetValue(Obj1)
这样我的伴侣就不必覆盖/更改它,我也不必硬编码所有的枚举(这并不小)

我知道假装传递一种类型而不是另一种类型听起来很愚蠢,但是如果你将'Obj1'传递给函数,那就像说'0',因为它们是相关的,所以我提出了这个'傻瓜'问题


谢谢。

您可以使用静态强制转换将整数强制转换为枚举类型,例如

SetValue(static_cast<enumtype>(4));
SetValue(静态_cast(4));
不过,这是无法维持的最后手段。枚举的一部分意义在于拥有比裸整数常量更有意义的东西。使用它们是件好事的另一个原因是,由于某些原因,整型常量可能需要更改,因此很难找到调用函数的代码中使用这些常量的所有位置并相应地更改它们


您不能通过从某处包含头文件来访问枚举类型吗?

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

SetValue(static_cast<enumtype>(4));
SetValue(静态_cast(4));
不过,这是无法维持的最后手段。枚举的一部分意义在于拥有比裸整数常量更有意义的东西。使用它们是件好事的另一个原因是,由于某些原因,整型常量可能需要更改,因此很难找到调用函数的代码中使用这些常量的所有位置并相应地更改它们


您不能通过从某处包含头文件来访问枚举类型吗?

您是否有可能是指
enum
而不是结构?是的,很抱歉,失败了。我已经编辑了它,但没有使用typedef enum{…}enumName。这不是typedef的用途。我的想法是不必改变我同伴的工作,但谢谢你。我仍然不知道为什么有人投票否决了我的问题,但是nvm。你是指
enum
而不是结构吗?是的,很抱歉,太失败了。我已经编辑了它,但没有使用typedef enum{…}enumName。这不是typedef的用途。我的想法是不必改变我同伴的工作,但谢谢你。我仍然不知道为什么有人否决了我的问题,但是nvm。嗨,谢谢!我不知道你也在那里使用statc演员阵容(我从来没有想过静态演员阵容不知道为什么O.O。)顺便说一句。。。我不会像你说的那样写这个号码。这是一个更复杂的问题,所以如果号码改变,这不会受到影响:)谢谢你的回答!嗨,谢谢!我不知道你也在那里使用statc演员阵容(我从来没有想过静态演员阵容不知道为什么O.O。)顺便说一句。。。我不会像你说的那样写这个号码。这是一个更复杂的问题,所以如果号码改变,这不会受到影响:)谢谢你的回答!