我正在尝试使用节点为我的队列 (FIFO) 执行深层复制,但出现错误并且不知道是什么原因造成的。当我不复制任何东西时,所有方法都可以正常工作,但是一旦我尝试复制,我就会得到“MyQueue.exe”停止工作。当我什至不使用这些方法时,就会发生这种情况。即使我注释掉整个 do-while 循环,它也会发生。有谁知道这是什么原因造成的?
MyQueue::MyQueue (void)
{
    head = NULL;
    queueSize = 0;
}
MyQueue::MyQueue (const MyQueue & myq)
{
    copyQueue (myq);
}
MyQueue & MyQueue::operator = (const MyQueue & myq)
{
    copyQueue (myq);
    return *this;
}
void MyQueue::copyQueue (const MyQueue & myq)
{
    head = NULL;
    queueSize = 0;
    Node* temp = myq.head->next;
    do
    {
        enqueue(myq.head->data);
        temp = temp->next;
    }
    while ( temp->next != NULL );
}
MyQueue::~MyQueue (void)
{
}
void MyQueue::enqueue (const int n)
{
    Node* temp = tail;
    tail = new Node (n);
    queueSize++;
    if ( empty() )
    {
        head = tail;
    }
    else
    {
        temp->next = tail;
    }
}
int MyQueue::dequeue (void)
{
    if ( !empty() )
    {
        int result = head->data;
        Node* temporary = head;
        head = (temporary->data, temporary->next);
        queueSize--;
        return result;
    }
    else
    {
        std::cout << "No Items to remove" << std::endl;
        return NULL;
    }
}
int MyQueue::peek (void)
{
    return head->data;
}
bool MyQueue::empty (void)
{
    if ( head == NULL || queueSize == 0)
    {
        return true;
    }
    return false;
}
这就是我的节点被复制的方式
Node & Node::operator = (const Node* & nd)
        {
            data = nd->data;
            next = nd->next;
        }