поэтому у меня есть иерархия классов, которая выглядит следующим образом:
Осциллятор -> AdvancingOscillator -> ViralOscillator
Лупа -> OsciMag
И OsciMag также наследуется от Oscillator (не смог правильно отформатировать, извините, если это сбивает с толку). Проблема возникает, когда я пытаюсь создать гетерогенную коллекцию OsciMags, передав разыменованный указатель (типизированный для осциллятора, но потенциально содержащий адрес производного класса) в конструктор OsciMag. У меня есть несколько конструкторов копирования, которые выглядят так:
OsciMag::OsciMag(const Oscillator& osc, const Magnifier& mag)
: Oscillator(osc), Magnifier(mag) {}
OsciMag::OsciMag(const AdvancingOscillator& osc, const Magnifier& mag)
: AdvancingOscillator(osc), Magnifier(mag) {}
OsciMag::OsciMag(const ViralOscillator& osc, const Magnifier& mag)
: ViralOscillator(osc), Magnifier(mag) {}
Проблема здесь двоякая:
Здесь мне нужно сделать так, чтобы класс OsciMag создавался с помощью Oscillator, AdvancingOscillator или ViralOscillator, чтобы в моей основной программе я мог иметь разнородную коллекцию.
Задача ещё не решена.
Других решений пока нет …