草庐IT

c++ - 枚举值与枚举名称冲突

让我们采用我最近在项目中某处找到的代码构造:namespaceTest{enumEName{CoolEnum,NiceEnum};enumCoolEnum{CoolVal1,CoolVal2};enumNiceEnum{NiceVal1,NiceVal2};}我的问题是为什么编译器允许这样的事情。让我们在这里看一个代码示例:Test::CoolEnumcEnum=Test::NiceVal1;//INVALID,ascompilerreferstoTest::CoolEnumvalueofTest::Enameenum为什么允许这样的混淆?我明白为什么我必须在enum关键字前面加上,所

c++ - 循环枚举值的实现

实现具有循环值的枚举以及从一个值转换到另一个值的适当函数的最佳方法是什么?例如:enumclassDirection{NORTH,EAST,SOUTH,WEST};constexprDirectionleft(Directiond){return(Direction)((std::underlying_type::type(d)-1)%4);}但是,我觉得这样很容易出错,而且通常不可读。有没有更合适的方法来处理这种类型的枚举? 最佳答案 你总是可以这样做:enumclassDirection{NORTH,EAST,SOUTH,WES

c++ - 在 Windbg 中,如何在调试时列出枚举的值?

通常,enum值是简单的编译器增量值或直接设置为整型文字,因此可以通过查看源文件轻松推导出或直接看到这些值。但是,有时enum值用于将类内常量设置为等于在别处定义的值或不容易复制的编译时表达式的结果。有没有办法让Windbg向我显示每个enum成员在那些更棘手的情况下的实际值? 最佳答案 考虑这个小结构:structfoo{enumenum1{enum1_val1_=5,enum1_val2_,};enumenum2{enum2_val1_=0x0001,enum2_val2_=0x0010,};enum{//assumethese

c++ - 将枚举类与 std::bitset 一起使用

首先我想要一个普通的枚举而不是基于位的枚举,因为不同枚举的数量将超出任何整数类型。我还想利用C++11enumclass的类型安全性。为此,自然选择std::bitset,但我不知道如何将这两者绑定(bind)在一起。需要自定义bitset吗?如何绕过这样一个类的实现? 最佳答案 由于enumclasses是枚举的包装器,您可以将它们转换为基础类型。并且使用一些私有(private)继承,您可以有选择地从C++stdlib类中导入一些功能,而不必担心Liskov原则。组合导致更清晰的代码。使用这些功能,我们可以包装std::bits

c++ - std::is_signed 不适用于强类型枚举:int

谁能解释一下,为什么#include#includeusingnamespacestd;enumE:signedint{a=-1,b=1,};intmain(){std::cout()std::is_signed不做,锡上写的是什么?谢谢... 最佳答案 如果我们查看is_signed的文档它说:IfTisasignedarithmetictype,providesthememberconstantvalueequaltrue.Foranyothertype,valueisfalse.并且枚举不是算术类型,因此结果应该为假。来自C+

c++ - 通过引用传递带有枚举类的枚举

我有thefollowingcode我认为应该编译但没有编译。#includetypedefuint8_ttesttype;enumtestenum:uint8_t{};voidfoo(uint8_t&v){}intmain(){testtypebar;foo(bar);testenumbaz;foo(baz);return0;}我收到以下错误:prog.cpp:15:9:error:invalidinitializationofnon-constreferenceoftype'uint8_t&{akaunsignedchar&}'fromanrvalueoftype'uint8_t{

c++ - Objective-C 枚举错误?

我在类头的顶部定义了一个枚举:enumPresetSeq{kSeqClear=0,kSeqAllBeats,kSeqAllTicks};但是当我尝试使用枚举为该类声明一个方法时。-(void)quickSetSeq:(PresetSeq)patternforChannel:(long)ch;我收到错误:在“PresetSeq”之前应有“)”如果我改用typedef枚举:typedefenum{kSeqClear=0,kSeqAllBeats,kSeqAllTicks}PresetSeq;然后编译器很高兴,但我不记得在C/C++中必须这样做。在Obj-C中枚举必须是typedef吗?谢谢

c++ - 非整数/枚举类型的非类型模板参数的用例?

C++允许非类型模板参数为整数或枚举类型(整数包括bool值和字符),以及指向任意类型的指针和引用。我见过广泛使用的整数、bool值和枚举参数,我很欣赏它们的实用性。我什至见过compile-timeparsingofstrings巧妙地使用字符参数.但我想知道作为对任意类型的指针或引用的非类型模板参数有哪些用例? 最佳答案 使用指向成员函数的指针作为模板参数使得编译器可以内联对该函数的调用。在我对这个问题的回答中可以看到这种用法的一个例子:Howtoallowtemplatedfunctorworkonbothmemberandn

c++ - 多个枚举值的一个模板特化

通常如果我想通过枚举获得一个模板化(数据)类,我会写这样的东西enumclassModes:int{m1=1,m2=2,m3=3};templateclassDataHolder{};templateclassDataHolder{public:inta=4;};然后,如果我希望Modes::m1的特化与Modes::m2的特化相同,我会再次编写相同的特化。有没有办法为多个枚举值编写一个特化?我已经用SFINAE试过了,但我没有成功。templateclassDataHolder{};template::type>classDataHolder{public:inta=4;};这不会编

HarmonyOS-UIAbitity-枚举说明——【坚果派-红目香薰】

摘要作者:红目香薰团队:坚果派团队介绍:坚果派由坚果创建,团队拥有12个华为HDE以及若干其他领域的三十余位万粉博主运营。 HarmonyOS-UIAbitity-枚举说明下面是所有的枚举对应类以及参数值,可以根据目录快速获取位置。目录摘要HarmonyOS-UIAbitity-枚举说明ColorImageFitBorderStyleLineJoinStyleTouchTypeMouseButtonMouseActionCurveAnimationStatusFillModePlayModeKeyTypeKeySourceEdgeWeekDirectionBarStateEdgeEffectA