我当前任务的这一部分让我完全难过:
我正在尝试构建一个包含复制构造函数的 LinkedList 类,该构造函数本身调用静态方法 (*makeCopy())。我不知道如何使 makeCopy 方法工作(所有方法标题都在作业中提供给我们)。
class ListNode
{
public:
ListNode(double v, ListNode *p)
{
value = v;
next = p;
}
private:
double value;
ListNode *next;
friend class LinkedList; // LinkedList has friend status
};
// The linked list class itself
class LinkedList
{
public:
//Add number to Linked List
void add(double x)
{
if (head == NULL)
{
head = new ListNode(x, NULL);
return;
}
else
{
ListNode *nodePtr = head;
head = new ListNode(x, nodePtr);
}
}
LinkedList() { head = NULL; }
//Default destructor
~LinkedList()
{
ListNode *nodePtr = head;
while (nodePtr != NULL)
{
ListNode *garbage = nodePtr;
nodePtr = nodePtr->next;
delete garbage;
}
}
//Copy Constructor
LinkedList(LinkedList &);
//Copy function
static ListNode *makeCopy(ListNode *pList);
private:
ListNode * head;
};
以下是我尝试编写 makeCopy 函数的方式:
LinkedList::LinkedList(LinkedList &list)
{
*makeCopy(list.head);
}
static ListNode *makeCopy(ListNode *pList)
{
if(pList->value == NULL)
{
return NULL;
}
else
{
ListNode *node = pList;
while(node != NULL)
{
ListNode newOne = *node;
node = node->next;
}
}
return;
}
首先,我继续收到错误“成员 ListNode::value 无法访问”。其次,我对 C++ 很陌生,而且我很确定我已经很远了。如果有人可以帮助我朝着正确的方向前进,将不胜感激。谢谢
这是我当前对复制构造函数和 makeCopy 方法的迭代。不幸的是,ListNode 构造函数以及所有方法头都是分配的一部分。我们必须为他们编写代码。我现在得到的错误是:两个返回语句都说“错误:构造函数或析构函数可能不会返回值”。我完全迷失了这个,因为这只是一个返回语句,我没有看到构造函数或析构函数。
LinkedList::LinkedList(LinkedList &list)
{
LinkedList *copy = new LinkedList();
while(list.head != NULL)
{
ListNode node = *makeCopy(list.head);
copy->add(node.value);
list.head = head->next;
}
return *copy;
}
ListNode * LinkedList::makeCopy(ListNode *pList)
{
ListNode node = *pList;
return *node;
}