/ / flatbuffers c ++ prevod z vyrovnávacej pamäte na objekt dostupný iba pre root_type (zatiaľ čo java má všetky) - java, c ++, flatbuffers

flatbuffers c ++ previesť z vyrovnávacej pamäte na objekt dostupný iba pre root_type (zatiaľ čo java má všetko) - java, c ++, flatbuffers

Podľa vzoru flatbuffers na c ++,Funkcia GetMonster je generovaná ako monštrum definované ako root_type. Schéma môže mať samozrejme iba 1 root_type. čo obmedzovalo, že z bufetu na obj. rovnako ako rozbaliť

Pokiaľ ide o javu, každý typ definovaný v schéme má vygenerovanú funkciu „getRootAs ...“, čo je veľmi výhodné. každý typ môže byť ľahko prevedený z ByteBuffer priamo.

Takže v prípade použitia sieťových hier s c ++ existujúveľa typov na posielanie cez sieť bez priameho vzťahu. máme definovať jeden súbor schém pre každý typ? za účelom generovania Get / Unpack?

PS: Chápem, že to dokážem sám

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

ale zaujímalo by ma, prečo nie je takáto funkcia konverzie Get / Unpack dostupná pre všetky typy, ale iba pre root_type špecificky v c ++?

odpovede:

0 pre odpoveď č. 1

Takto sa ukázalo, ako sa API ukázali, pretože Java šablóny nemajú rovnaké schopnosti ako C ++. Ako ste povedali, ak chcete použiť viac koreňov, použijete skrátenú verziu.