У меня есть 3 класса, A
, B
и C
, где B
- это A
, а C
- это A
.
Эти классы предназначены для сохранения истории, поэтому A
предоставляет виртуальный метод, который могут создавать производные классы для уведомления о необходимости архивирования истории, который называется void archive()
.
Теперь внезапно возникает необходимость собрать информацию из A
, B
и C
в одном классе, и я не уверен, что лучший подход.
Я думал о создании нового класса D
, который наследуется от B
и C
, и изменении их наследования на virtual public A
, чтобы избежать проблемы с бриллиантами и иметь D::archive()
просто для вызова B::archive()
и C::archive()
.
Это хороший подход? Или я должен перепроектировать 4 класса так, чтобы я не использовал множественное наследование?