Re: [分享] C++11 : Strongly typed enumerations

楼主: ot32em (reverse(wasefo);)   2014-09-11 00:01:58
最近有用到 enum class 当做是某些值的 key
就有用到需要把 enum 内的值都走一遍
来检查 KEY 对应的值有没有存在
然后就有遇到 enum class 要巡回
要转换成 integer +1 会很麻烦
后来有参考到 StackOverflow 上的一些解法
"把他做成 Iterator"
这里我有实作出一个简单的 Enum Wrapper
可以 for(auto key: Enum<YOUR_ENUM>()){ ... }
就能够走一遍
不过还是有一些限制
像是要连号跟要指定 First/Last 元素
但是己经可以省下一些转型的手续
http://ot-note.logdown.com/posts/231687
※ 引述《akasan (KITO)》之铭言:
: 好读版 : http://kitoslab.blogspot.tw/2012/09/c11-strongly-typed-enumerations.html
: 因为我不太会上色所以这边只有难读版的XD....
: - 回顾 enum
: 在 C++11 以前以下 enum 会污染整个 namespace
: 大致的意思是如果你宣告了一个 enum E, 他有 A, B, C 三个值
:
作者: carylorrk (carylorrk)   2014-09-14 04:03:00
在没有 compile-time reflection 之前看到的解决方法大多还是以 MACRO 产生包含所有值的 array 为主不过通常会先避免需要 iterate 所有值的情况。记得之前有看到用 macro 产生类似 java enum util 的有点类似这样 但是更完整(支援自订值和 namespace 等http://goo.gl/QUr5ed

Links booklink

Contact Us: admin [ a t ] ucptt.com