草庐IT

c++ - 在 C++ 中使用枚举而不是结构进行标记分派(dispatch)

让我们从标准库中获取std::unique_lock的实现:structdefer_lock_t{explicitdefer_lock_t()=default;};structtry_to_lock_t{explicittry_to_lock_t()=default;};structadopt_lock_t{explicitadopt_lock_t()=default;};inlineconstexprdefer_lock_tdefer_lock{};inlineconstexprtry_to_lock_ttry_to_lock{};inlineconstexpradopt_lock_

c++ - 为什么 C++17 向命名空间和枚举器添加属性?

如问题所述,我知道C++17中将有命名空间和枚举器的属性。这将如何影响我们的代码?这些属性是什么?它们允许我们做什么?我找不到任何好的资源来理解这个新功能。 最佳答案 目前,如果您要贬低特定的枚举值,则需要依赖编译器扩展。例如,在clang中,您可以通过以下方式指定弃用的枚举值:enumOperationMode{OM_Invalid,OM_Normal,OM_Terrified__attribute__((deprecated)),OM_AbortOnError__attribute__((deprecated))=4};一旦枚举

c++ - 枚举类计算常量

其实这个“问题”感觉起来极其简单。在计算图标偏移量时,我想到了以下方法:namespaceIcons{structIconSet{constexprIconSet(size_tbase_offset)noexcept:base_offset_(base_offset),icon(base_offset*3),iconSmall(icon+1),iconBig(icon+2){}size_ticon;size_ticonSmall;size_ticonBig;size_tbase_offset_;constexprsize_tnext()const{returnbase_offset_+

c++ - 不同编译器的枚举大小(以字节为单位)

这个问题在这里已经有了答案:WhatisthesizeofanenuminC?(7个答案)关闭7年前。枚举的大小在不同的编译器(gcc、visualc和其他?)中总是相同的吗?也就是说,特定枚举的sizeof()是否为每个遵循C/C++标准的编译器提供相同的值?

c++ - 您可以使用 Qt foreach 循环遍历每个可能的枚举值吗?

给定一个枚举:enumAnEnum{Foo,Bar,Bash,Baz};您可以使用Qt的foreach循环遍历每个枚举吗?此代码无法编译(不是我期望的...)foreach(AnEnumenum,AnEnum){//donothing} 最佳答案 如果它被移动到QMetaEnum中,那么你可以像这样迭代它:QMetaEnume=...;for(inti=0;ihttp://qt-project.org/doc/qt-4.8/qmetaenum.html使用作为QMetaEnum的QNetworkReply的示例:QNetworkRe

c++函数返回一个枚举?

所以我有一个名为paddleNS的命名空间用于名为paddle的类,在paddleNS中我有一个名为colour的枚举namespacepaddleNS{enumCOLOUR{WHITE=0,RED=1,PURPLE=2,BLUE=3,GREEN=4,YELLOW=5,ORANGE=6};}classPaddle:publicEntity{private:paddleNS::COLOURcolour;public:voidNextColour();voidPreviousColour();voidPaddleColour(paddleNS::COLOURcol){colour=col;

c++ - 如何获得枚举的基本类型?

声明如下:enumDrawBoldMode:unsigned{DBM_NONE=0,DBM_ITEM=1如何导出DrawBoldMode的基础类型(即无符号)? 最佳答案 std::underlying_type在GCC4.7中可用,但在那之前您可以获得近似的emulationwithtemplates:#include//ThisisahackbecauseGCC4.6doesnotsupportstd::underlying_typeyet.//Aspecializationforeachenumispreferrednames

任何枚举类型的 C++11 哈希函数

我正在为我的对象编写哈希函数。感谢GenericHashfunctionforallSTL-containers,我已经可以散列容器并组合散列了.但是我的类(class)也有枚举。当然我可以为每个枚举创建一个散列函数,但这似乎不是一个好主意。是否可以为std::hash创建一些通用规范,以便它可以应用于每个枚举?类似的东西,使用std::enable_if和std::is_enumnamespacestd{templateclasshash::value,E>::type>{public:size_toperator()(constE&e)const{returnstd::hash::

c++ - 合并枚举 C++

在我的项目中,我有几个类似这个的枚举声明;enumComparison{LT,//""EQ,//"=="LTEQ,//"="NEQ//"!="};enumArithmetic{  ADD,  //"+"  SUB,  //"-"  MUL,  //"*"  DIV,  //"/"  MOD,  //"%"};我想将其中的几个组合成一个组合枚举,这样;所有元素(来自子枚举)都出现在组合枚举中。所有元素都具有唯一值(显然)。所有元素在组合枚举中的值与原始枚举一致。像这样:enumComparison{LT,//""EQ,//"=="LTEQ,//"="NEQ//"!="  ADD,  //

c++ - 如何制作一个值超过允许的最大整数的枚举?

我正在用C++制作一个枚举,以制作一个使用二进制标志的有限状态机。看起来像:enumVStates{NEUTRAL=0x00000000,//000000//PhysicalStatusDRY=0x00000001,//000001WET=0x00000002,//000010HOT=0x00000004,//000100COLD=0x00000008,//001000BURNED=0x00000016,//etc..FROZEN=0x00000032,EROS=0x00000064,//THANATOS=0x00000128,//SLEEP=0x00000256,STUNNED=0x