сначала позвольте мне объяснить мою иерархию:
Animal
/ | \
Mammal Fish Birds
/ \ / \
Horse MammalFish Flamingo
/ \
Mermaid GoldFish
Каждый класс имеет следующие методы:
Save(ofstream & ofs) // Saves the data to txt file
Load(ifstream & ifs) // Load the data from txt file
Constructor(ifstream & ifs) { Load(ifs) } // Constructor from file, uses `Load` method.
Каждый класс реализует свой собственный метод Load / Save (если у них есть какие-либо данныечленов) и вызывает предыдущий класс в иерархии метода Load / Save.
Проблема заключается в моем множественном наследовании, когда я использую Mermaid
или GoldFish
метод Save, он спасает животных дважды (что в основном делаетсмысл), но я не могу найти способ избежать этого ..
Другая проблема связана с конструктором, он автоматически вызывает все конструкторы по умолчанию базовых классов (что нежелательно, должен вызывать только Load()
, которыйвызывает методы базового класса).Я не могу явно вызывать конструкторы базового класса, потому что в моем методе Load()
я также вызываю методы базового класса Load()
, что заставит меня использовать Load()
дважды.
Спасибо.