Множественное наследование и поддержка виртуальной базы
Потоковый код предусматривает теперь 4 шаблона функций, которые поддерживают виртуальные базовые классы и множественное
наследование.
В любом классе с прямой виртуальной базов следует использовать новые шаблоны функций ReadVirtualBase и WriteVirtualBase:
void Derived:Write( opstream& out )
{
WriteVirtualBase( (VirtualBase *)this, out);
...
}
void *Derived::Read( ipstream& in, uint32 ver )
{
ReadVirtualBase( (VirtualBase *)this, in );
...
}
Класс, производный от класса с виртуальными базами, не должен ничего особенного делать с этими виртуальными базами. Каждый
класс отвечает только за свои непосредственные базы.
Объектные потоки поддерживают теперь множественное наследование. Чтобы читать и записывать множественные базы, используйте
новые шаблоны функций WriteBaseObject и ReadBaseObject:
void Derived::Write( opstream& out )
{
WriteBaseObject( (Base1 *)this, out );
WriteBaseObject( (Base2 *)this, out );
...
}
void *Derived::Read( ipstream& in, uint32 ver )
{
ReadBaseObject( (Base1 *)this, in );
ReadBaseObject( (Base2 *)this, in );
...
}