草庐IT

枚举法

全部标签

c++ - 将枚举值映射到 C++ 中的类型

有什么方法可以将枚举值映射到C++中的类型,包括C++11。我有以下枚举类型:enumATTRIBUTE{AGE=0,MENOPAUSE,TUMOR_SIZE,INV_NODES,NODE_CAPS,DEG_MALIG,BREAST,BREAST_QUAD,IRRADIAT,CLASS};我想将此枚举的每个值映射到特定类型。我想将AGE映射到int,将MENOPAUSE映射到另一个枚举类型,将BREAST映射到bool等等。那么是否可以创建一个函数来返回一个类型的值,该值取决于attr变量的值?//Likethat:autovalue=map_attr(ATTRIBUTEattr);/

C++ - 将枚举类作为值或 const 引用传递更好吗?

因为它被称为“类”,所以我通常会将它作为const引用传递,但如果我使用普通枚举,它没有什么区别,对吗?那么,如果我将枚举类作为值/常量引用传递,会有什么不同吗?另外,类型重要吗?例如枚举类:int 最佳答案 enumclass像常规enum一样保存一个整数值,因此您可以安全地按值传递它而无需任何开销。请注意,编译器有时也可能通过将其替换为按值传递来优化按引用传递。但是,如果不应用此类优化,通过引用传递可能会导致一些开销。 关于C++-将枚举类作为值或const引用传递更好吗?,我们在S

【海贼王编程冒险 - C语言海上篇】自定义类型:结构体,枚举,联合怎样定义?如何使用?

目录1->结构体的声明1.1->结构的基础知识1.2->结构的声明1.3->特殊的声明1.4->结构的自引用1.5->结构体变量的定义与初始化1.6->结构体内存对齐1.7->修改默认对齐数1.8->结构体传参2->位段2.1->什么是位段2.2->位段的内存分配2.3->位段的跨平台问题2.4->位段的应用3->枚举3.1->枚举类型的定义3.2->枚举的优点3.3->枚举的使用 4->联合(共用体)4.1->联合类型的定义4.2->联合的特点4.3->联合大小的计算1->结构体的声明1.1->结构的基础知识结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。1.2-

c++ - 强制使用不正确的枚举值?

我在C++的枚举中遇到了一些不寻常的(至少对我来说……)行为。我在VisualStudio2008和g++版本4.4.3中尝试了以下内容#includeusingnamespacestd;enumtestEnum{//nozeroenumone=1,two=2,three=3};intmain(intargc,char*argv[]){testEnume;//undefinedvalue(maybezero,butthatsjustluck)coute的未定义值如我所料,我理解为什么你不能从int转换为enum(但你可以换一种方式)。我很好奇最后两个枚举(e3和e4)如何被允许编译并获

c++ - 在 C++ 中向枚举添加 "all"选项的好的设计是什么?

我有一个枚举类如下:enumclassAge{Eleven,Twelve,Thirteen};然后我有一个方法叫做vectorGetPeopleOfAge(Ageage).什么是好的设计,以便开发人员可以调用它并让人们拥有11、12和13?我可以称它三次,这很糟糕,但我确实想提一下我考虑过它。我可以添加All枚举并检查我的方法,但我不喜欢用All这样的枚举污染枚举的想法。只是为了让我的案子奏效。我知道这是解决这个问题的常用方法,有些人可能不同意我的看法,但对我来说感觉很老套,我正在寻找替代方法。也许我应该使用枚举以外的东西? 最佳答案

c++ - 关于枚举和按位运算

也许问题很简单...有一个枚举定义:enumuop_flags_enum{FICOMP=0x001,FLCOMP=0x002,FFCOMP=0x004,FMEM=0x008,FLOAD=0x010,FSTORE=0x020,FCTRL=0x040,FCALL=0x080,FRET=0x100,FCOND=0x200};代码中某处有:if(uop->flags&FCTRL)这个条件什么时候为真,什么时候不为真? 最佳答案 最后,此代码检查是否在uop->flags变量中打开了一位(FCTRL标志)。但这里有一些解释:隐含地,代码if(

c++ - 冲突的枚举

如果两个不同的库定义相同的枚举并且我需要在同一个项目中使用这两个库会怎样?枚举月份{January=0,February,...,December}谢谢。附言它是C。没有命名空间。我不能让他们分开。需要一些解决方法。什么是枚举链接?内部还是外部?C++项目中使用的C库。C++标签适用。 最佳答案 ClibsusedinC++project.C++tagapplies由于它们在C++项目中使用,因此在将它们包含在C++代码中时可以使用命名空间,如下所示://Cfiles//libone.henumMonth{January=0,Feb

c++ - 为枚举类型赋值

enumoptions{Yes,No};classA{inti;stringstr;optionsopt;};intmain{Aobj;obj.i=5;obj.str="fine";obj.opt="Yes";//compilererror}如何将constchar*赋值给opt? 最佳答案 就这样obj.opt=Yes;这段代码:obj.opt="Yes";尝试将字符串文字(完全不同的类型)分配给枚举类型,C++不会自动为您转换。Howcanassignconstchar*toopt?你必须手动执行此操作,我喜欢保留一组免费函数来

ios - 如何在 Swift 中创建 NS_OPTIONS 风格的位掩码枚举?

在Apple关于与CAPI交互的文档中,它们描述了将标记为NS_ENUM的C样式枚举导入为Swift枚举的方式。这是有道理的,因为Swift中的枚举很容易作为enum值类型提供,因此很容易看出如何创建我们自己的枚举。再往下,它是关于NS_OPTIONS标记的C风格选项的:SwiftalsoimportsoptionsmarkedwiththeNS_OPTIONSmacro.Whereasoptionsbehavesimilarlytoimportedenumerations,optionscanalsosupportsomebitwiseoperations,suchas&,|,and

深入理解 C# 编程:枚举、文件处理、异常处理和数字相加

C#枚举枚举是一个特殊的“类”,表示一组常量(不可更改/只读变量)。要创建枚举,请使用enum关键字(而不是class或interface),并用逗号分隔枚举项:enumLevel{Low,Medium,High}您可以使用点语法访问枚举项:LevelmyVar=Level.Medium;Console.WriteLine(myVar);Enum是"enumerations"的缩写,意思是“特定列举”。在类内部定义枚举也是可行的:classProgram{enumLevel{Low,Medium,High}staticvoidMain(string[]args){LevelmyVar=Leve