私の現在の割り当てのこの部分は、私を完全に困惑させました:
静的メソッド(* makeCopy())を呼び出すコピーコンストラクターを含むLinkedListクラスを構築しようとしています。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;
}
まず、「member ListNode ::valueisinnaccesible」というエラーが引き続き表示されます。第二に、私はC ++に非常に慣れていないので、かなり離れていると確信しています。誰かが私を正しい方向に動かすのを手伝ってくれるなら、それは大いにありがたいです。どうも
これは、コピーコンストラクターとmakeCopyメソッドの現在の反復です。残念ながら、ListNodeコンストラクターは、すべてのメソッドヘッダーとともに、割り当ての一部です。それらのコードを作成する必要があります。私が今得ているエラーはこれです:両方のreturnステートメントは「エラー:コンストラクタまたはデストラクタは値を返さないかもしれません」と言います。これは単なるreturnステートメントであり、コンストラクターもデストラクタも表示されないため、これは完全に失われています。
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;
}