Streaming Base Classes

The streaming functions for a derived class must explicitly invoke the streaming functions for each base class, in order to stream the full state of the object. Given a class Derived which inherits from class Base:

void Derived::writeToStream(IDataStream& toWhere) const
{
    IStreamOutFrame localFrame(toWhere);
    Base::writeToStream(toWhere);  // Stream out our base class
    fData >>= toWhere;             // then stream out our data members
}

The readFromStream function has the same general form:

void Derived::readFromStream(IDataStream& fromWhere)
{
    IStreamInFrame localFrame(fromWhere);
    Base::readFromStream();        // Stream in our base class
    fData <<= fromWhere;           // then stream in our data members.
};


Introduction to the Streaming Classes
Data Streams


Adding Streaming Support to Structs and Simple Classes
Creating a Streamable Class
Creating a Streamable Template Class
Instantiating a Stream Module
Enabling Release-to-Release Data Compatibility
Transitioning from Older Streaming Constructs