Reputation: 71
I need to do the copy constructor for the queue class. Here's my code. I don't know why I got a seg fault!
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;
}
}
//////////////////////////// This is the main function when i testing the copy constructor
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;
}
}
Upvotes: 0
Views: 389
Reputation: 172934
I'm not sure what you want to do with newNode
, but your loop's condition seems wrong, because newNode
seems get never changed in the loop. As @RSaha's comment, Maybe newNode
is not needed, so:
while (nodePtr != NULL){
enqueue(nodePtr->value);
nodePtr = nodePtr->next;
}
Upvotes: 4
Reputation: 12175
To me it looks like newNode can never be null so that loop continues until nodePtr = 0 in which case its next is invalid. Also newNode->value needs to be initialized.
Maybe change it to while(nodePtr != NULL)
Upvotes: 0