Считывание и запись базовых классов
В своем текущем программном коде вы можете считывать и записывать базовые классы непосредственно, например:
void Derived::write( opstream& out )
{
Base::write( out );
...
}
void *Derived::read( ipstream& in )
{
Base::read( in );
...
}
Этот метод продолжает работать, но не будет записывать в базовый класс никакого номера версии. Чтобы использовать все преимущества отслеживания версий, измените эти вызовы и используете
новые шаблоны функций, которые работают с версиями:
void Derived::Write( opstreams& out )
{
WriteBaseObject( (Base *)this, out );
...
}
void *Derived::Read( ipstream& in, uint32 ver )
{
ReadBaseObject( (Base *)this, out );
...
}
Важно привести указатель к базовому классу, иначе ваша программа может аварийно завершиться.