Пишу очередь с приоритетом. Необходимо перегрузить оператор +, но наталкиваюсь на ошибку: "Вызвано исключение: нарушение доступа для чтения.
helpPtr было 0xCCCCCCCC.".
Падает в функции void push(T val, size_t prt) на строке while (helpPtr && helpPtr->priority < prt) во время исполнения.
Вот реализация
friend const queue operator + (const queue& q1, const queue& q2)
{
queue newQ(q1);
Node* helpPtr(q2.tail);
while (helpPtr) {
newQ.push(helpPtr->value, helpPtr->priority);
helpPtr = helpPtr->prev;
}
return queue(newQ);
}
Здесь код.
Конструктор копирования никак не инициализирует поля head и tail нового объекта и начинает делать push, в то время как в этих полях содержится мусор. В результате все падает.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости