【发布时间】:2026-01-16 16:30:01
【问题描述】:
我需要为队列类做复制构造函数。 这是我的代码。我不知道为什么我有一个段错误!
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;
}
}
【问题讨论】:
-
newNode是如何在循环中改变的? -
newNode->value可能未初始化使用 -
如果没有看到
Queue类的声明,真的很难说正确的代码应该是什么。 -
为什么这个 codedump + “为什么 xxx 发生了” 得到了投票?!这是一个基本问题,可以通过调试器和一些语言的工作知识来解决
-
@redFIVE:嘿,乖点!我是新来的。还不知道如何使用调试器。
标签: c++ constructor copy queue