Поскольку вы пометили свой пост полиморфизмом, я дам вам ответ на основе полиморфизма во время выполнения. Вы этого не делаете.
Частью полиморфизма времени выполнения является то, что объект, полученный из базового класса, может быть передан и сохранен как как объект базового класса. класс, сохраняя при этом его переопределенную функциональность (да, нарезка является проблемой, но мы имеем дело с указателями здесь). Поэтому вам не нужно менять Node
на NodeAVL
, достаточно просто установить leftChild
или rightChild
для указания на объект NodeAVL
вместо Node
, любые переопределенные методы будут вызывать метод в NodeAVL
.
В любом случае вы устанавливаете свои узлы на nullptr
, но если вы этого не сделаете, вы можете создать Node
конструктор, который принимает указатели для leftChild
и rightChild
(возможно, сделайте это защищен, поэтому только производные классы могут использовать его).
В качестве дополнительного примечания используйте список инициализаторов для установки value
вместо того, чтобы настраивать его впоследствии. Также предпочитайте умные указатели голым указателям.