Я пытаюсь сделать копию объекта, который представляет собой круговую очередь. Мои Enqueue и Dequeue работают правильно, но всякий раз, когда я это делаю, я получаю ошибку времени выполнения.
CQUEUE j = k;
Окно вывода говорит, что мой конструктор копирования рекурсивен на всех путях управления? Может кто-нибудь помочь мне понять, что я делаю неправильно, пожалуйста? Вот мой конструктор копирования вместе с перегруженным оператором присваивания.
CQUEUE::CQUEUE(const CQUEUE& original)
{
(*this) = original;
}
void CQUEUE::operator=(CQUEUE w)
{
qnode *p = w.front;
(*this).front = new qnode;
(*this).back = front;
while(p -> next != w.back)
{
back -> num = p -> num;
p = p -> next;
back -> next = new qnode;
back = back -> next;
}
back -> num = p -> num;
p = p -> next;
back -> next = new qnode;
back = back -> next;
back -> num = p -> num;
back -> next = front;
front -> prev = back;
}