【问题标题】:How to reflect field names and types如何反映字段名称和类型
【发布时间】:2021-02-28 07:03:13
【问题描述】:
struct Vec3 {
  x:float;
  y:float;
  z:float;
}
table Monster {
  pos:Vec3; // Struct.
  mana:short = 150;
  hp:short = 100;
  name:string;
  friendly:bool = false (deprecated);
  inventory:[ubyte];  // Vector of scalars.
  color:Color = Blue; // Enum.
  weapons:[Weapon];   // Vector of tables.
  equipped:Equipment; // Union.
  path:[Vec3];        // Vector of structs.
}

1.将此 flatbuffers 架构编译为 C++ 源代码。

2.如何反映Monster(C++ struct)并获取成员和类型?

【问题讨论】:

  • 为什么需要这种反射?您需要解决的根本问题是什么?是什么让您相信这种反思是解决该问题的唯一(或最佳)解决方案?请始终询问您遇到的实际问题,并告诉我们您为解决该问题做了哪些研究,以及您想尝试什么解决方案(或者更好的是已经尝试过)。
  • @Someprogrammerdude 我们现在正在使用 protobuf 发送和分析(使用反射)数据。我们发现 flatbuffers 解析更快。所以我正在尝试 flatbuffers 反射来解析 csv 文件。

标签: c++ flatbuffers


【解决方案1】:

C++ FlatBuffers 带有两个反射系统,基于完整二进制模式文件的反射和迷你反射。我推荐后者,因为它更简单、更高效。两者的详细信息:https://google.github.io/flatbuffers/flatbuffers_guide_use_cpp.html

但是,像 FlatBuffers 这样的系统被设计为在没有反射的情况下使用。大多数反射的使用都是错误的(“我想编写可以处理我所有序列化的通用代码”),你最好根本不使用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-27
    • 1970-01-01
    • 2019-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多