用于队列seg故障的复制构造函数

时间:2014-08-28 05:51:40

标签: c++ constructor copy queue

我需要为队列类做复制构造函数。 这是我的代码。我不知道为什么我会遇到段故障!

Queue::Queue()
{
  front = NULL;
  rear = NULL;
  numItems = 0 ;
}

// Copy constructor                                                                                                                                                                
Queue::Queue(const Queue& queueToCopy)
{
  //QueueNode *newNode;//pointer to a new node                                                                                                                                       
  QueueNode *nodePtr;//traverse pointer                                                                                                                                            

  newNode = new QueueNode;
  nodePtr = queueToCopy.front;
  while (nodePtr != NULL){
    enqueue(nodeNode->value);
    nodePtr = nodePtr->next;
  }
}

//////////////////////////// 这是我测试复制构造函数时的主要功能

int main()
{
  Queue obj; 
  //enqueue....
  ...
  // Testing Queue copy constructor                                                                                                                           
  Queue objQ2(objQ);
  cout << "The values in the queue objQ2 were: \n";
  while (!objQ2.isEmpty()){
  int value;
  objQ2.dequeue(value);
  cout << value << endl;
  }
}

2 个答案:

答案 0 :(得分:4)

我不确定你想对newNode做什么,但你的循环条件似乎不对,因为newNode似乎永远不会在循环中改变。作为@ RSaha的评论,可能不需要newNode,所以:

while (nodePtr != NULL){
  enqueue(nodePtr->value);
  nodePtr = nodePtr->next;
}

答案 1 :(得分:0)

对我来说,看起来newNode永远不会为null,因此循环一直持续到nodePtr = 0,在这种情况下,next接收无效。此外,还需要初始化newNode-&gt;值。

可能将其更改为while(nodePtr!= NULL)