草庐IT

c++ - C/C++ : extract a subset of one enum to form a new enum

假设我有一个列出所有人员的主枚举:typedefenumall_personnel{//maleTONY,MIKE,JIM,//femaleJESSICA,MARY,}all_personnel_t;现在我想为male和female定义其他两个枚举(因为,例如,一些函数只接受males或females枚举参数),但我想使用与主枚举中相同的名称标识符。在C/C++中有可能吗?还是有其他方法?似乎以下内容不起作用(编译器提示redeclarationofenumerator‘TONY’等:typedefenummale_personnel{TONY,MIKE,JIM,}male_perso

c++ - 枚举成员的值,当某些成员具有用户定义的值时

enumABC{A,B,C=5,D,E};D和E能保证大于5吗?A和B是否保证小于5(如果可能)?编辑:如果我说C=1会发生什么 最佳答案 它由C++标准7.2/1保证:Theidentifiersinanenumerator-listaredeclaredasconstants,andcanappearwhereverconstantsarerequired.Anenumerator-definitionwith=givestheassociatedenumeratorthevalueindicatedbytheconstant-

c++ - 如何将无符号整数分配给 C++ 中的枚举?

在我正在重写其内部结构的C++库中,我有一些我想转换为枚举的无符号整数变量:enumInitType{INIT,NON_INIT};我有一个这种类型的变量:InitTypeInitVar;库是从变量为纯整数的代码的另一部分调用的:uint32_tUnsignedIntVar;我想将从调用者传递的未签名版本分配给库内部枚举:InitVar=UnsignedIntVar;但是编译器不喜欢这样:error:invalidconversionfrom'uint32_t'to'InitType'执行此转换最干净的方法是什么?以下是我的一些想法:如果enum只有两个值,我可以这样做:InitVar

c++ - typedef 和枚举或枚举类

我有一个这样的枚举:(实际上,它是一个枚举类)enumclasstruth_enum{my_true=1,my_false=0};我希望能够将my_true暴露给全局命名空间,这样我就可以这样做:chara_flag=my_true;或者至少:chara_flag=(char)my_true;取而代之的是:chara_flag=truth_enum::my_true;这可能吗?我试过这样的:typedeftruth_enum::my_true_true_;我收到错误:枚举类truth_enum中的my_true没有命名类型我的猜测是my_true是一个值而不是类型。有没有其他方法可以让

c++ - 写static const uint变量和匿名枚举变量有什么区别?

正在查看boostasiossl_client.cppexample并在顶部找到了这个:enum{max_length=1024};想知道,这个和有什么区别吗namespace{constintmax_length=1024;}或staticconstintmax_length=1024;或者也许它们是绝对相等的,但这只是更短? 最佳答案 如果您将它用作值而不是引用,它们是等价的。enum{constantname=initializer};习语曾经在头文件中非常流行,因此您可以在类声明中毫无问题地使用它:structX{enum{

c++ - 在 QML 中使用 C++ 枚举作为字符串

我想做的是在C++中使用以下枚举:classMyClass:publicQQuickItem{Q_OBJECTQ_PROPERTY(MyEnumenumValueREADgetEnumValue)public:enumMyEnum{MyEnumElement=0};Q_ENUM(MyEnum)slots:MyEnumgetEnumValue(){returnenumValue;}private:MyEnumenumValue=MyEnumElement;};在QML中是这样的:MyClass{id:myClass}Text{text:"enumValueis:"+myClass.enu

c++ - 与枚举的隐式转换

这是一个基本问题,我希望轻松地谷歌一下,但没有找到答案。假设我有一个枚举:enumabc{a,b,c};支持哪些隐式转换?编译器之间是否有任何编译器扩展或不同行为?我问的是关于到枚举的隐式转换:enumabctest=(**whichtypecanappearhere?**);以及从枚举的隐式转换:(**whichtypecanappearhere?**)test2=test;我想知道C和C++的答案。 最佳答案 正如引用所说:Valuesofunscopedenumerationtypeareimplicitly-converti

c++ - 在不膨胀命名空间的情况下在 C++ 中声明枚举的好方法

我注意到如果我使用MicrosoftVisualStudioExpress2013在C++中执行类似的操作:namespaceLogLevelEnum{enumType{ALL,FINEST,FINE,INFO,WARNING,SEVERE,OFF};}typedefLogLevelEnum::TypeLogLevel;我可以使用诸如LogLevel::INFO和LogLevel::WARNING之类的东西来访问enum项,但不是简单地执行信息或警告。我喜欢这种方式,因为它不会将尽可能多的符号放入包含的命名空间中。但是,我想知道这是否是标准行为。我知道可以使用::运算符对类和命名空间进

c++ - 如何将枚举类传递给 QML?

我正在学习使用Qt来学习QML,但在将enumclass传递给qml时遇到了一些麻烦。当我将信号与int参数一起使用时-一切正常,代码运行完美。但是,问题来了,如果我将信号与一些enumclass参数一起使用,我在qml信号处理程序中有未定义值。我尝试通过qmlRegisterType注册enumclass但它不起作用。我将不胜感激。这里是代码:一些HelperclassclassHelper:publicQObject{Q_OBJECTQ_ENUMS(Requester)Q_ENUMS(JANSWER)public:enumclassRequester{ReqLogin,ReqNul

c++ - 自定义枚举基础类型

我可以定义一个类型作为枚举的基础类型吗?像这样:structS{S(inti):value(i){}operatorint(){returnvalue;}intvalue;};enumE:S{A,B,C};错误信息告诉我S必须是整数类型。我尝试像下面这样专门化std::is_integral,但似乎在这种情况下,“整数类型”确实意味着基本类型之一。namespacestd{templatestructis_integral:publictrue_type{};}那么,使用任何版本的C++,是否有办法使自定义类型作为整数类型假冒? 最佳答案