草庐IT

C++ 在类中声明静态枚举与枚举

在如下所示的类声明中定义时,staticenum和enum定义之间有什么区别?classExample{Example();~Example();staticenumItems{desk=0,chair,monitor};enumColors{red=0,blue,green};}另外,既然我们是在类中定义类型,那我们怎么调用它们呢?以此类推,如果我在类中定义了一个变量,我们称它为成员变量。 最佳答案 static不能应用于enum声明,因此您的代码无效。来自N3337,§7.1.1/5[dcl.stc]Thestaticspeci

c++ - "control reaches end of non-void function"枚举类型完全处理大小写切换

为什么即使处理了type_t的所有可能值,此代码也会触发“控制到达非空函数的结尾”?处理此警告的最佳方法是什么?在切换后添加return-1?(代码测试here)typedefenum{A,B}type_t;intuseType(type_tx){switch(x){caseA:return0;caseB:return1;}}相关:Detectingifcastinganinttoanenumresultsintoanon-enumeratedvalue 最佳答案 一般来说,enum不是唯一的。例如,有人可以像useType((ty

c++ - 这个枚举声明是否符合标准?

所以枚举通常用于将一组“常量整数”声明为另一种类型,代表某种东西。例如。enumColor{RED=0,BLUE,YELLOW};这很清楚。但最近我在代码中遇到了以下问题。这是在嵌入式系统的编译器中。enumState{DISABLED=0,ENABLED=!DISABLED};而且效果很好。它表现为bool类型。我的问题是,它(这种语法)是否符合ANSI?如果它符合标准,那么为什么编译器会在内部定义类似_Bool的东西来表示bool值,然后在stdbool.h(对于C语言)中定义:#definebool_Bool...//heregoesdefinitionsoftrueandfal

c++ - 扩展枚举?

假设我创建了一个枚举,但最终有人想向该枚举添加项目,该怎么做?例如://blah.hppenumPizzaDressing{DRESSING_OLIVES=0,DRESSING_CHEESE=1};在我的FunkyPizza课上,可能会有胡椒配料。那么如何在不明显修改原始枚举的情况下添加辣椒呢?谢谢。 最佳答案 这最接近您想要的:Baseenumclassinheritance 关于c++-扩展枚举?,我们在StackOverflow上找到一个类似的问题: h

c++ - 为什么作用域枚举允许使用 |使用先前分配的值进行初始化时的运算符?

我正在将无作用域枚举转换为有作用域枚举,遇到了一个难题。Stroustrup,C++编程语言,第4版,第8.4.1节,范围枚举类未隐式转换为整数类型的文档,并为运算符提供代码|和&作为如何使用static_cast来解决这个问题的示例。在先前定义的enum值上使用|运算符进行以下初始化不应该是非法的吗?enumclassFileCopy{PreviousHDUs=1,CurrentHDU=2,FollowingHDUs=4,AllHDUs=PreviousHDUs|CurrentHDU|FollowingHDUs,CurrentHeader=8};intmain(){std::cout

c++ - 使用同名的类和枚举?

我有一个同名的类和一个枚举值。在类里面,我想使用给出错误的枚举。有没有什么方法可以重命名或移动到不同的命名空间来使用枚举?例子:namespacefoo{enumbar{BAD};classBAD{voidworse(){barb=BAD;//error}};}; 最佳答案 这是执行名称查找的棘手部分之一。C++中有两种标识符作用域,一种用于类类型,一种用于通用标识符作用域。枚举值BAD位于通用标识符范围内,而类类型BAR位于类标识符范围内。这就是允许您同时拥有枚举值和具有相同名称的类的原因:两个名称不会冲突。在BAD类中,标识符查

c++ - 将枚举转换为 int

我对这段代码有疑问:templatevoiddosth(T&value,constT&default_value){if(condition)value=10;elsevalue=default_value;}当我调用它时enum{SITUATION1,STIUATION2};intk;dosth(k,SITUATION1);编译器(g++4.5)说nomatchingfunctionforcallto'dosth(int&,)'为什么编译器不自动将枚举转换为int? 最佳答案 Yourproblem是因为无法从您提供的函数参数实例

c++ - 是否可以将枚举的默认类型设置为无符号字符?

我必须将一些枚举打包到字节数组(char*)并通过网络发送。是否可以将枚举的默认类型设置为无符号字符?(我现在可以转换或使用&0xff来提取第一个字节/字符,但这需要额外的操作,所以有没有办法在枚举定义中解决这个问题?) 最佳答案 这仅适用于C++11stronglytypedenums:enumclassMyEnum:unsignedchar{E1,E2};参见here了解更多信息 关于c++-是否可以将枚举的默认类型设置为无符号字符?,我们在StackOverflow上找到一个类似的

c++ - Qt:在 QComboBox 中使用枚举

我有一组参数需要编辑,其中一些是枚举。到今天为止,我在QSpinBox中使用枚举的原始值,这一点都不友好。你必须自己记住这些值并设置好的:例如,E_Range可以显示一个组合框,其中包含:typedefenum{ERANGE_2_5=0,/*!我没有找到任何有关在QComboBox中使用枚举的信息。可能吗?如果是,步骤是什么?我的意思是,我想我必须通过Qt声明枚举,以便它可以通过Qt元对象“枚举”。但从那里,我不确定。 最佳答案 当然,您始终可以对这些值进行硬编码,但是一旦您修改了该枚举,您就必须记住更改填充组合框的代码。Imean

C++ 将枚举作为参数传递

如果我有一个像这样的简单卡片类:classCard{public:enumSuit{CLUBS,DIAMONDS,HEARTS,SPADES};Card(Suitsuit);};然后我想在另一个文件中创建一个卡片实例,我该如何传递枚举?#include"Card.h"usingnamespacestd;intmain(){Suitsuit=Card.CLUBS;Cardcard(suit);return0;}错误:'Suit'未在此范围内声明我知道这行得通:#include"Card.h"usingnamespacestd;intmain(){Cardcard(Card.CLUBS);