使用 Flatbuffers 有效存储来自不同 类 的 c++ 对象列表的好方法是什么?
what is a good way to efficiently store a list of c++ objects from different classes using Flatbuffers?
我有一个从不同 classes 派生的 c++ 对象的列表。我想使用 Flatbuffers persist/restore 它们。
一个明显的方法是使用联合,但我不想浪费字节或使用指向 superclass 的指针向量(假设这是 Flatbuffers 中的一个选项)。
另一种方法是存储所有对象的串联字节以及从对象索引到字节偏移量和 class 类型的单独映射。但也许有更好的方法。
另一种方法是在对象中使用内部 links,允许它们相互引用。这将允许有效存储任意数据结构。这是目前我的首选路线,但我不确定是否可行——而且它可能不是最佳选择。也许如果我覆盖 pack/unpack 机制,则可以将字节偏移量放入 link 字段中。使用全反射就可以了。
如有任何帮助,我们将不胜感激!
谢谢
根据 Flatbuffers 的创建者 van Oortmerssen 先生的说法,可以创建 table 的联合,其中每个 table 对应一个对象 class,然后引用它列表中每个对象的联合。
我有一个从不同 classes 派生的 c++ 对象的列表。我想使用 Flatbuffers persist/restore 它们。
一个明显的方法是使用联合,但我不想浪费字节或使用指向 superclass 的指针向量(假设这是 Flatbuffers 中的一个选项)。
另一种方法是存储所有对象的串联字节以及从对象索引到字节偏移量和 class 类型的单独映射。但也许有更好的方法。
另一种方法是在对象中使用内部 links,允许它们相互引用。这将允许有效存储任意数据结构。这是目前我的首选路线,但我不确定是否可行——而且它可能不是最佳选择。也许如果我覆盖 pack/unpack 机制,则可以将字节偏移量放入 link 字段中。使用全反射就可以了。
如有任何帮助,我们将不胜感激! 谢谢
根据 Flatbuffers 的创建者 van Oortmerssen 先生的说法,可以创建 table 的联合,其中每个 table 对应一个对象 class,然后引用它列表中每个对象的联合。