我目前的工作的這一部分有我徹底難倒了:製作拷貝構造函數W /鏈表
我想建立一個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功能:「成員ListNode ::值爲innaccesible」
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;
}
首先我繼續得到錯誤其次,我對C++非常陌生,並且很確定我沒有辦法。如果有人能幫助我在正確的方向推動,將不勝感激。 Thx
這是我目前的複製構造函數和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;
}
您已經定義makeCopy爲非成員函數,而不是一個成員函數(方法)。這就是爲什麼它無法訪問私人會員。 – 2012-08-03 04:35:29