我需要为队列类做复制构造函数。 这是我的代码。我不知道为什么我会遇到段故障!
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;
}
}
答案 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)