Конструктор копирования не работает для циклической очереди?

Я пытаюсь сделать копию объекта, который представляет собой круговую очередь. Мои 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;
}
0
задан Mike 10 July 2012 в 05:36
поделиться