1

flatbuffers のサンプルによると、c++ では root_type に Monster が定義されているため、GetMonster 関数が生成されます。明らかに、1 つのスキーマは 1 つの root_type しか持つことができません。これにより、buf から obj に直接変換できるのはスキーマごとに 1 つの型だけであることが制限されました。アンパックと同じ

Javaの場合、スキーマで定義されたすべてのタイプに関数「getRootAs...」が生成されるため、非常に便利です。すべての型は、ByteBuffer から直接簡単に変換できます。

したがって、C++ を使用したネットワーク ゲームのユース ケースでは、直接関係なくネットワーク経由で送信するタイプが多数あります。タイプごとに 1 つのスキーマ ファイルを定義する必要があるのでしょうか。Get / Unpackを生成するには?

PS私はそれを自分でできることを理解しています

auto nonRootCustomTypeObj = flatbuffers::GetRoot<NonRootCustomType>(fbb.GetBufferPointer());

しかし、なぜそのような Get/Unpack 変換関数をすべての型で利用できないのですか?

4

1 に答える 1