编程语言C++ 反射
TungLamgetml/reflect-cpp: A C++20 library for fast serialization, deserialization and validation using reflection. Supports JSON, BSON, CBOR, flexbuffers, msgpack, TOML, XML, YAML / msgpack.org[C++20] ~ getml/reflect-cpp:一个 C++20 库,用于使用反射进行快速序列化、反序列化和验证。支持 JSON、BSON、CBOR、flexbuffers、msgpack、TOML、XML、YAML / msgpack.org[C++20] (github.com)
概述
游戏开发中会有大量的场景应用到反射:
- 序列化和反序列化
- GUI 界面绘制
- 脚本接口的导出和绑定
目前 C++ 标准不支持反射,在此探讨一下一些开源反射库的实现方案,常见的反射方案有如下几类:
- 反射实现:静态反射 / 动态反射
- 元信息收集:手动注册 / 自动解析