Я не вижу конструктора для класса PolygonNode
. Указатель link_
инициализируется нулем при создании? Если нет, то это может быть проблема, проявляющаяся в ошибке, которую вы получаете. Вы должны убедиться, что указатели link_
в экземплярах PolygonNode
инициализируются нулем. Определите соответствующие конструкторы.
У вас есть конструктор копирования, определенный для вашего класса полигонов? Я не вижу ни одного в опубликованном коде, но, возможно, вы просто не вставили его, и он у вас есть. Если нет, то это один из возможных источников серьезных проблем.
Конструктор копирования, который автоматически синтезируется компилятором, просто скопирует указатели в классе Polygon
.
Ваш оператор присваивания принимает аргумент по значению
Polygon& operator= (Polygon ply);
Это использует конструктор копирования. Если это автоматически синтезированный, ply
внутри оператора имеет указатели, указывающие на тот же список, аргумент, передаваемый по значению оператору. ply
ведет себя так, как если бы он владел списком, и список уничтожается, когда ply
выходит из области видимости. Оригинальный аргумент оставлен с висячими указателями.
Вы должны определить правильный конструктор копирования.
Вам также следует рассмотреть возможность получения аргумента в операторе присваивания по ссылке const Я не вижу смысла принимать это по значению. Может быть, у вас есть, но даже если вы делаете, вы можете временно изменить его, чтобы проверить оператор, прежде чем определить правильный конструктор копирования. В вашем операторе вы должны проверить для самостоятельного назначения. Теперь я вижу только добавление новых узлов к старому Polygon
. Я не думаю, что это правильно, но я думаю, что это только для тестирования сейчас.