C++ 反射

getml/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++ 标准不支持反射,在此探讨一下一些开源反射库的实现方案,常见的反射方案有如下几类:

  • 反射实现:静态反射 / 动态反射
  • 元信息收集:手动注册 / 自动解析