The C++ API is meant to build up a buffer. When you create a table you are laying out bytes in a contigues binary array. You are not creating objects in an object oriented sense.
The builder let's you practically put all the data that you have stored else where into an array of bytes.
So in this case reading while writing defeats the purpose, because the purpose is to serialise given data as quickly as possible with minimum amount transient memory.
I am working on FlatBuffersSwift implementation where the code generator generates real classes which can be filled and serialised to a byteArray.
Here is an example for building up a complex cyclical graph, and than serialising and deserialising it.
Here is the schema:
And here is the generated source file
As you can see I have a class Friend which is just a normal class I can instantiate it as if it would be a simple class and than call toByteArray() for serialisation.
This is very convenient API, but it is not as fast because the created objects are transient memory from serialisation stand point.
So if you want to serialise data and send it over the wire or save it to disk, the code generated by flatc is perfect.
If you want generated Table classes to be part of your application runtime than you need to generate different API, similar to what I do with FlatBuffersSwift.
PS: @Dmitry Chichkov, reading while writing has nothing to do with FlatBuffers as the serialisation format. It is more about API, if it is designed to do such thing.