C++ Enum Reflection
1. 概述
简而言之,编程语言中的反射(Reflection)指的是从运行时中获取语言本身的类型等信息。C++ 缺乏这样的机制,对于最简单的 enum 类型,我们或许可以实现带有反射功能的 enum。
我们实现了几个宏,通过宏定义的 enum,就自动地拥有反射功能。
2. 用法
2.2 宏定义
1 2 3 4 5 6 7 |
// 可在任意 namespace 中调用,不可在 struct/class 内调用 #define TERARK_ENUM_PLAIN(EnumType, IntRep, ...) details... #define TERARK_ENUM_CLASS(EnumType, IntRep, ...) details... // 可在 struct/class 内调用,不可在任意 namespace 中调用 #define TERARK_ENUM_PLAIN_INCLASS(EnumType, IntRep, ...) details... #define TERARK_ENUM_CLASS_INCLASS(EnumType, IntRep, ...) details... |