草庐IT

枚举法

全部标签

c++ - 什么是枚举类,我为什么要关心?

对于从未写过一行C++11,并且目前没有机会使用C++11进行编程的人,您能否在一个简短的段落中告诉我:什么是“枚举类”,我们为什么需要它? 最佳答案 enumclass称为作用域枚举。它可以防止使用枚举器的名称污染枚举出现的namespace。在C++03中,您可以通过将enum放在专用的class中来有效地做同样的事情。也许这就是语法的来源,这有点令人困惑。另一个区别是这种类型的枚举数不会隐式转换为int(需要static_cast)。这可能很少需要,但它可以安全地重载一个采用int参数的函数和一个采用enum类型的函数。您可以

c++ - 可以使 C++ 枚举大于 64 位吗?

在我的entitycomponentsystem我使用位掩码跟踪和查询每个实体具有哪些组件。//ThankstoShafikYaghmourforthemacrofix#defineBIT(x)(static_cast(1)has_components(mask)){...}我已经达到枚举的64位限制。C++枚举(可移植)是否可以大于64位?更新1:我知道std::bitset,但我无法创建像automask=std::bitset{components::foo,components::baz}这样的掩码因为std::bitset没有采用std::initializer_list的构

c++ - 我如何跟踪(枚举)实现接口(interface)的所有类

我有这样一种情况,我有一个接口(interface)定义了某个类的行为方式,以便在我的程序中扮演某个角色,但此时我不能100%确定我将写入多少个类填补那个角色。然而,与此同时,我知道我希望用户能够从GUI组合/列表框中选择哪个具体类实现了他们想要用来填补特定角色的接口(interface)。我希望GUI能够枚举所有可用的类,但我宁愿在决定实现一个新类来填补该角色时不必返回并更改旧代码(这可能是几个月后)我考虑过的一些事情:使用枚举优点:我知道怎么做缺点我必须在添加新类时更新枚举难以迭代在接口(interface)中使用某种static列表对象,并从实现类的定义文件中添加一个新元素优点:

c++ - 在枚举定义中使用先前定义的成员作为后来成员的一部分是否合法?

namespaceValueType{enumEnum{Boolean=0,Float=1,Double,SInt=8,SLong,UInt=SInt+(1 最佳答案 是的——要求是它是一个完整的常量表达式。C++标准包括以下示例:enum{d,e,f=e+2}; 关于c++-在枚举定义中使用先前定义的成员作为后来成员的一部分是否合法?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/question

java - Java 中类似 C 的枚举

我正试图在C++中找到一个Java等价物,以提供以下便利:enum{ANIMAL_CAT=0,ANIMAL_RAT,ANIMAL_BAT,...NUM_ANIMALS};Animalanimals[NUM_ANIMALS];animals[ANIMAL_CAT].mNumLegs=4;animals[ANIMAL_RAT].mNumLegs=4;...我知道这不是世界上最漂亮的东西,但我可以在枚举中的任何地方添加一个新的ANIMAL_xxx,并且以下所有条目都会自动调整。在Java中是否有一种干净的方法来执行此操作?感谢您的回复,但我可能已经暗示了比我预期的更简单。我正在开发一款游戏,

c++ - 用于枚举的 boost::bimap

我正在尝试为C++中的枚举创建一个简单的双向查找工具。我的单向查找工作正常...enumMyEnum{One,Two,Three};constboost::unordered_mapMyEnumMap=map_list_of(One,"One")(Two,"Two")(Three,"Three");然后通过看看MyEnumMap.at(One)这行得通,但它只允许基于键的查找。我想使用一个双向查找容器,例如boost:bimap以允许基于值和键的简单反向查找。虽然map_list_of似乎与boost::bimap不兼容。首先,我是否仍应将map_list_of与boost::bima

c++ - Eclipse CDT C++ 枚举 "could not be resolved"

我正在使用C++/OpenGL在EclipseCDT中开发一款游戏,它编译并运行得很好,但出于某种原因,我声明的一个枚举(SCREEN_MAIN_MENU)在红色波浪线中带有下划线并突出显示它表示SymbolSCREEN_MAIN_MENU可以得不到解决。这是一个公然的谎言,我如何让Eclipse识别它?屏幕.h:#ifndefSCREENS_H#defineSCREENS_Henum{SCREEN_MAIN_MENU,SCREEN_LOADING,SCREEN_GAME};classScreen{public:staticvoidchange(intscreen);staticvoi

第83篇:HTTP身份认证401不同情况下弱口令枚举方法及java代码实现(上篇)

 Part1前言 大家好,我是ABC_123。在日常的渗透测试及红队评估项目中,经常遇到http401身份认证的情况,具体就是访问一个特定目录的时候,会弹出一个要求输入用户名密码的框框。很多朋友会误以为是与tomcat的httpbasic认证一样,就是把用户名及密码进行了简单的base64加密,然后使用相应的工具进行弱口令猜解,实际上这里面有各种各样的身份验证算法,非常复杂。接下来ABC_123就搭建IIS测试环境,给大家分享一下相关经验,同时分享一下不同情况下弱口令枚举的关键Java代码实现,网上能用的java代码极少,甚至是搜索不到,ABC_123也是踩了一大堆的坑。注:特别感谢我的APT

c++ - 如何将 C++11 枚举类用于标志

假设我有这样一个类:enumclassFlags:char{FLAG_1=1;FLAG_2=2;FLAG_3=4;FLAG_4=8;};例如,现在我可以拥有一个具有类型标志并分配值7的变量吗?我可以这样做吗:Flagsf=Flags::FLAG_1|Flags::FLAG_2|Flags::FLAG_3;或Flagsf=7;出现这个问题是因为在枚举中我没有为7定义值。 最佳答案 您需要编写自己的重载operator|(并且可能是operator&等)。Flagsoperator|(Flagslhs,Flagsrhs){returns

c++ - 枚举大小 *在实践中*

对于2011年之前的C++,标准规定枚举可以是任何大小,从byte到longlong。但在实践中,似乎大多数编译器都将它们设为4字节的整数。那么,在实践中是否有任何模糊当前的编译器不会将它们设为整数?我似乎需要澄清一下,我没有做任何奇怪的事情,比如枚举>2^31。只是简单的枚举。在32位或64位系统上,我的软件将无法在16位系统上运行! 最佳答案 让我们在任何现代编译器上看看它:#include#includeenumMySmallSmall{SmallValue=0,};enumMyLongLong{LongValue=std::