enum-class相关内容

std::get 使用枚举类作为模板参数

我正在使用 std::tuple 并定义了一个类枚举以某种方式“命名"元组的每个字段,而忘记了它们的实际索引. 所以不要这样做: std::tupletup;/* ... */std::get(tup) = bleh;//是 0 还是 1? 我是这样做的: 枚举类东西{MY_INDEX_NAME = 0,OTHER_INDEX_NAME};std::tupletup;/* ... */ ..
发布时间:2022-01-04 23:23:56 C/C++开发

C ++枚举类:强制转换为不存在的条目

我在一个项目中遇到这种情况,我们有一些套接字通信,主要交换字符以进行流控制.我们将这些字符转换为 enum类:char .我想知道,如果另一端发送的字符不在我们的枚举类中,会发生什么情况. 我有这个mwe: 枚举类Foo:char {未知,ENUM1 ='A',ENUM2 ='B',ENUM3 ='C'};char bar1(){返回"B";}char bar2(){返回'D';}int ..
发布时间:2021-05-04 20:23:27 C/C++开发

在可能的类中使用C ++ 20中的“使用枚举"吗?

在此答案中,提到在即将到来的C ++ 20标准中可以使用 enum class 上>使用语句,然后将enum字段导入本地名称空间. 我想知道这是否还意味着我也可以在这样的类定义中使用它: Foo类{枚举类Color{红色的,蓝色的};使用枚举颜色;};int main(){Foo :: Color c = Foo :: red;} 还是我仍然需要提供完整的名称空间?: Foo : ..
发布时间:2021-04-20 19:05:52 C/C++开发

为什么不能将int类型的枚举类值用作int

由于其自身的范围,我想将旧式的 enum 更改为 enum class:int . 但是编译器抱怨在整数算术中使用这些值.但是为什么-由于该枚举被显式地键入为int? 示例: 枚举类MsgType:int {输出= 1,输入= 2,调试= 3};枚举类MsgSender:int {A = 1B = 2C = 3};//稍后在代码中int id =(MsgType :: Input ..
发布时间:2021-04-19 20:29:01 C/C++开发

用Cython封装枚举类

我试图将枚举类包装在c ++头文件中以用于cython项目. 例如,如何 枚举类颜色{红色,绿色= 20,蓝色}; 用Cython包裹起来. 解决方案 CPP类 枚举类颜色{红色,绿色= 20,蓝色}; 类型的定义 来自"colors.h"的 cdef extern:cdef cppclass颜色:经过 颜色类型的定义 来自"colors.h"命名空间"Col ..
发布时间:2021-04-19 19:20:48 C/C++开发

具有类成员和constexpr链接时优化的C ++ 11枚举

在我的项目中,我有很多枚举,这些枚举需要具有与枚举成员关联的其他属性以及与枚举类型关联的辅助静态方法。 据我所知,标准枚举类MyItem {...}不可能实现,因此对于我项目中的每个枚举类,我都有一个辅助类MyItemEnum,该类封装了这些辅助静态方法并实例化了自身的辅助实例,这样我就可以访问它们的方法以获得其他属性。 下面是一个示例(尽可能简化,但我相信所有要讨论的功能都保留在那里 ..
发布时间:2020-10-08 18:31:02 其他开发

类vs枚举类作为索引类型

P0138R2提案始于 1 有一种非常有用的技术可以引入几乎是精确副本的新整数类型,现代C ++ 11程序中的不同类型: 枚举类具有明确指定的基础类型。示例: 枚举类索引:int {}; //注意:没有枚举器。 一个人可以将 Index 用作新的整数类型,它没有隐式转换成任何东西(好!)。 要转换 Index 为其基础类型很有用。 int运 ..
发布时间:2020-09-27 22:50:52 C/C++开发

枚举类可以嵌套吗?

这可以做到吗? 枚举A { 枚举B { SOMETHING1, SOMETHING2 }; 枚举C { SOMETHING3, SOMETHING4 }; }; 如果没有其他解决方案? 此问题的目的:希望/需要执行以下操作: 枚举类ElementaryParticleTypes { 枚举类别MATTER { 枚 ..
发布时间:2020-09-27 20:47:36 C/C++开发

用户定义的C ++ 11枚举类默认构造函数

是否可以指定枚举类的默认构造函数? 我正在使用 enum class 来指定库中特定数据类型所允许的一组值:在这种情况下,它是Raspberry Pi的GPIO引脚ID号。看起来像这样: 枚举类PinID:int {N4 = 4,N17 = 17,/ * ... etc ... * /} 我这样做的重点不是仅仅使用例如 int 是为了确保代码是安全的:我可以 static_ass ..
发布时间:2020-09-27 20:11:42 C/C++开发

使用枚举类的C ++ 11标准一致位掩码

您可以使用enum类实现标准符合(如n3242草案的17.5.2.1.3中所述)类型的安全位掩码吗?按照我的阅读方式,如果类型T支持|,&,^,〜,| =,& =和^ =运算符,则它是位掩码,并且进一步可以执行if(l& r),其中l和r属于T类型。列表中缺少运算符!=和==,并且为了允许排序可能还想重载 ..
发布时间:2020-09-27 20:06:11 C/C++开发

包装cython的枚举类

我试图将枚举类包装在c ++头文件中以用于cython项目。我已经在Google周围搜索了一下,但找不到实现该方法的方法-是否受支持? 解决方案 CPP类 枚举类颜色{红色,绿色= 20,蓝色}; 类型的定义 cdef extern来自“ colors.h”: cdef cppclass颜色: 通过 颜色类型的定义 cdef e ..
发布时间:2020-09-27 07:15:30 C/C++开发

是否可以手动为枚举类定义转换?

通常,您可以使用以下语法为一个类定义类型转换: class Test { public : 显式运算符bool(){return false; } }; 对于枚举类,有没有办法做到这一点? / code>? 解决方案 不,不是。 实际上,枚举类根本不是任何类。仅使用 class 关键字是因为突然将无范围的枚举更改为范围限定的枚举意味着重新制作 all ..
发布时间:2020-09-27 06:21:17 C/C++开发

实现枚举类的运算符

在相关讨论之后“枚举类"的递增和递减 ,我想问一下enum class类型的算术运算符的可能实现. 原始问题的示例: enum class Colors { Black, Blue, White, END_OF_LIST }; // Special behavior for ++Colors Colors& operator++( Colors &c ) { c = static ..
发布时间:2020-05-21 19:22:10 C/C++开发

c ++:使用“枚举类”的类中的枚举

在类中写入枚举的正确方法是什么?我正在用c ++编写conway的生活代码游戏。所以我有一个模式类,其中包含有关不同类型模式的信息: 类模式 { public: Patterns(); 〜Patterns(void); private: 枚举类PatternType { bloat, 块, 闪烁, toad } ; PatternType pattern_; ..
发布时间:2017-08-24 01:40:05 C/C++开发