Я рассматриваю возможность реализации, помимо наследования классов C ++, совместимости файлов между различными версиями приложений (например: открытие в myapp 2.0 файла, сохраненного из myapp 1.0 ).
Предположим, например, что myapp 1.0 имеет:
class employee {
public:
char *mp_name;
unsigned int m_age;
(and all needed serialization methods)
}
Далее вы разрабатываете myapp 2.0 , который добавляет поддержку длязарплаты, но вместо того, чтобы изменять классы в 1.0, вы получаете новые классы:
class employee20: public employee {
public:
unsigned int m_salary;
(methods for creating employee20 from employee and viceversa)
(and all needed serialization methods)
}
С этим механизмом, кажется, можно было бы легко добиться совместимости для чтения myapp 1.0 файлов из myapp 2.0 и даже возможность сохранять файлы 1.0 из версии 2.0, потому что employee20
имеет методы для создания одного объекта из другого в другой версии.
Но теперь давайте предположим, что вы выпустите myapp 3.0 который отбрасывает поддержку сотрудников возраста ...
Возможно ли удалить унаследованный член из производного класса?
Iзначит, это поМожно сделать что-то вроде этого:
class employee30: public employee20 {
public:
void m_age;
(methods for creating employee30 from employee20 and viceversa)
(and all needed serialization methods)
}
Или, возможно, нет способа сделать это, и это просто показывает, что я должен отказаться от идеи получения совместимости версий через наследование?