fragile base class problem