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