jjzjj

enumeration

全部标签

c++ - 如何在 C++ 中将自定义项添加到系统菜单?

我需要枚举所有正在运行的应用程序。特别是所有顶级窗口。对于每个窗口,我都需要将我的自定义项目添加到该窗口的系统菜单中。我如何在C++中完成它?更新。我非常乐意为Windows、MacOS和Ubuntu提供解决方案(尽管我不确定MacOS和Ubuntu是否有“系统菜单”之类的东西)。 最佳答案 对于Windows,另一种获取顶级窗口的方法(除了使用回调的EnumWindows之外)是获取桌面的第一个子窗口,然后检索它的所有兄弟窗口:HWNDwnd=GetWindow(GetDesktopWindow(),GW_CHILD);while

C++ "Floating Point Enum"

我正在寻找使用C++03标准的解决方案(几年来我一直被迫使用该版本的标准)。也欢迎C++11的解决方案,但不会“接受”作为此问题的答案。有什么简单明了的方法可以将一组相关的常量浮点值表示为单一类型(类似于枚举)以确保类型安全而不会产生大量开销,并且仍然允许我对这些值进行操作直接float?最终结果是我希望能够执行如下操作:enumFloatingPointEnum{VALUE1=0.1234f,...VALUEN=0.6789f};floatSomeFunction(FloatingPointEnumvalue){floatnew_value;/*performsomeoperatio

c++ - 枚举结构的成员?

有没有办法在C++或C中枚举结构(struct|class)的成员?我需要获取成员名称、类型和值。我之前在一个变量是全局范围的小项目中使用过以下示例代码。我现在遇到的问题是需要将一组值从GUI复制到对象、文件和VM环境。我可以创建另一个“穷人的”反射系统,或者希望创建一些我还没有想到的更好的东西。有没有人有什么想法?编辑:我知道C++没有反射。unionvariant_t{unsignedintui;inti;doubled;char*s;};structpub_values_t{constchar*name;unionvariant_t*addr;chartype;//'I'isin

c++ - 在现代 C++ 中,是否有等效于来自 python 的基于范围的 `enumerate` 循环?

在C++中是否有与python中基于范围的enumerate循环等效的东西?我会想象这样的事情。enumerateLoop(autocounter,autoel,container){charges.at(counter)=el[0];aa.at(counter)=el[1];}这可以用模板或宏来完成吗?我知道我可以只使用老派的for循环并迭代直到到达container.size()。但我感兴趣的是如何使用模板或宏来解决这个问题。编辑根据评论中的提示,我玩了一下boost迭代器。我得到了另一个使用C++14的可行解决方案。templateautozip(constT&...contai

c++ - 在 C++ 中,枚举的大小是否必须等于其基础类型的大小?

我经常假设枚举的大小与其基础类型的大小相同。但它是标准强制要求的吗?标准(C++14,n4296)表示每个枚举都有一个基础类型(7.2/5)。该标准还表示对象表示为字节序列,并且对象的大小与其表示有关:3.9/4TheobjectrepresentationofanobjectoftypeTisthesequenceofNunsignedcharobjectstakenupbytheobjectoftypeT,whereNequalssizeof(T).5.3.3/1Thesizeofoperatoryieldsthenumberofbytesintheobjectrepresenta

c++ - "enumeral and non-enumeral type in conditional expression"背后的推理

自C++11过渡以来,GCC输出警告“条件表达式中的枚举和非枚举类型”。我想了解此警告背后的原因。比较枚举常量有什么危险?很明显我们可以通过以下方式摆脱这个警告-Wno-enum-compare通过显式转换为整数类型但为什么这么麻烦?就个人而言,我一直努力编写无警告代码,通常默认发出的警告是非常合理的。例如,它认为比较有符号和无符号整数是危险的。但是使用枚举是广泛使用的惯用C++元编程。我不知道有任何替代方案,它同样具有可读性、简明扼要且不需要任何实际存储空间。举一个具体的例子:下面的元函数会出现什么问题,以至于警告就足够了?templatestructMaxSize;template

c++ - 如何在类中定义枚举并从外部使用它

只是因为我不知道在我的C++书籍或google上到底在哪里可以找到它。我实际上如何在类中定义一些枚举(在本例中为{left=1,right=2,top=3,bottom=4})。我希望能够将此枚举作为参数而不是整数传递给成员函数,因此在外部使用枚举...有没有办法可以做到这一点,或者有没有更好的方法可以使枚举仅针对该类?这是无效的代码,显示enummySprite::myySprite::sidemembermySprite"mySprite::side"isnotatypename出于某种原因:classmySprite:publicsf::Sprite{public:enum{le

c++ - 'must have an argument of class or enumerated type'到底是什么意思

我有一个头文件和一个.cpp文件。我需要为我的.h文件编写函数,但在我完全完成骨架.cpp文件之前出现错误。金钱.h#ifndefMONEY_H#defineMONEY_H#include#includeusingnamespacestd;classMoney{public:Money(intdollars,intcents);Moneyoperator+(constMoney&b)const;Moneyoperator-(constMoney&b)const;Moneyoperator*(doublem)const;Moneyoperator/(doubled)const;voidp

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++ - 关于枚举和按位运算

也许问题很简单...有一个枚举定义: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(