我想知道在C++中,如果我有一个枚举,我可以访问第二个索引处的值吗?例如我有enumTest{hi,bye};如果我想要“嗨”,我可以做一些类似Test[0]的事情吗,谢谢。 最佳答案 是和不是。如果您的Enum没有明确的值,那么它是可能的。如果没有明确的值,枚举值会按照声明的顺序被赋予数值0-N。比如……enumTest{hi,//0bye//1}这意味着索引只是转换为文字值。TestEnumOfIndex(inti){returnstatic_cast(i);}这当然会在运行时进行0验证,一旦添加显式值,它就会崩溃。但它会在默认
是否可以编写一个匿名枚举类,然后比较它包含的内容?例如。enumclass{APPLE,BANANA}fruitType;//...if(fruitType==fruitType::APPLE)//... 最佳答案 不,fruitType是一个变量(尽管名称中有Type)。您不能使用变量名称来访问有关其类型的内容。enumclass的想法是这些值在定义之外是不可见的,除非您在它们前面加上类型名称。如果类型没有名称,这将很困难! 关于c++-匿名枚举类,我们在StackOverflow上找
是否可以编写一个匿名枚举类,然后比较它包含的内容?例如。enumclass{APPLE,BANANA}fruitType;//...if(fruitType==fruitType::APPLE)//... 最佳答案 不,fruitType是一个变量(尽管名称中有Type)。您不能使用变量名称来访问有关其类型的内容。enumclass的想法是这些值在定义之外是不可见的,除非您在它们前面加上类型名称。如果类型没有名称,这将很困难! 关于c++-匿名枚举类,我们在StackOverflow上找
我在我工作的项目中看到了这个结构:constenumSomeEnum{val0,val1,val2};这里const的作用是什么? 最佳答案 什么都没有。实际上,根据G++,这是一个编译器错误:error:qualifierscanonlybespecifiedforobjectsandfunctions但是,在C中它是允许的,但没有用。GCC说:warning:uselesstypequalifierinemptydeclaration问题在于const仅适用于对象(变量)和成员函数,而不适用于基本类型。
我在我工作的项目中看到了这个结构:constenumSomeEnum{val0,val1,val2};这里const的作用是什么? 最佳答案 什么都没有。实际上,根据G++,这是一个编译器错误:error:qualifierscanonlybespecifiedforobjectsandfunctions但是,在C中它是允许的,但没有用。GCC说:warning:uselesstypequalifierinemptydeclaration问题在于const仅适用于对象(变量)和成员函数,而不适用于基本类型。
看enumdocumentation,我注意到一件事:enum-key-oneofenum,enumclass(sinceC++11),orenumstruct(sinceC++11)enum和enumclass,当然可以,但是enumstruct是什么?文档似乎说enumclass和enumstruct完全相同:[...]scopedenumeration(declaredwiththeenum-keyenumclassorenumstruct)enumstruct|classname{enumerator=constexpr,enumerator=constexpr,...}[..
看enumdocumentation,我注意到一件事:enum-key-oneofenum,enumclass(sinceC++11),orenumstruct(sinceC++11)enum和enumclass,当然可以,但是enumstruct是什么?文档似乎说enumclass和enumstruct完全相同:[...]scopedenumeration(declaredwiththeenum-keyenumclassorenumstruct)enumstruct|classname{enumerator=constexpr,enumerator=constexpr,...}[..
在C++中使用枚举作为模板(类型)参数是否有任何限制/问题?例子:enumMyEnum{A,B,C,D,E};templateclassMyTemplate{public:_tvalue;voidfunc(const_t¶m){/*....*/}};//....MyTemplateMyInstance;我在Win32/x86上通过VS2008(SP1)使用MSVC++的实际问题是与使用枚举作为模板参数的类相关的几个编译错误(=编译器报告的错误)。由于我的项目不幸变得有点复杂(您可以将其视为设计错误:P),引发这些错误的模板类是派生的、嵌套的,甚至专门用于具有枚举模板参数的类。编
在C++中使用枚举作为模板(类型)参数是否有任何限制/问题?例子:enumMyEnum{A,B,C,D,E};templateclassMyTemplate{public:_tvalue;voidfunc(const_t¶m){/*....*/}};//....MyTemplateMyInstance;我在Win32/x86上通过VS2008(SP1)使用MSVC++的实际问题是与使用枚举作为模板参数的类相关的几个编译错误(=编译器报告的错误)。由于我的项目不幸变得有点复杂(您可以将其视为设计错误:P),引发这些错误的模板类是派生的、嵌套的,甚至专门用于具有枚举模板参数的类。编
这个问题在这里已经有了答案:HowcanIiterateoveranenum?(28个回答)关闭6年前。在C++中迭代具有连续值的枚举的首选simple方法是什么?我发现以前关于这个主题的SO问题涉及创建自定义operator++等,但这似乎有点矫枉过正。到目前为止,我想出的最好的是:enum{FOO,BAR,BLECH,NUM_ENUMS}MyEnum;//for(MyEnumm=FOO;m从编码风格的角度来看,这是否合理,是否会产生警告(g++-Wall...似乎对此很满意)? 最佳答案 确实很安全。这将是未定义的:MyEnum