2011-09-05 41 views
0

我有一個在鏈表的尾部插入一個新節點的功能:未申報首次使用此功能 - 編譯錯誤C++的LinkedList

void LinkedList::insert(Node* previousPtr, Node::value_type& newData) 
{ 
    Node *insertPtr; 

    insertPtr->setData(newData); 

    insertPtr->setNext(previousPtr->getNextPtr()); 

    previousPtr->setNext(insertPtr); 
} 

在其他功能我想打電話給以前的:

void copyData(Node* sourcePtr, Node*& headPtr, Node*& tailPtr) 
{ 
    ...//other code 
    insert(tailPtr, sourcePtr->getData()); 
    ...//other code 
} 

編譯器給出了一個錯誤:「insert」未申報首先使用此函數。我錯過了什麼?

+0

值得注意的是,這段代碼_does_使用了像C++ :: value_type這樣的正確的C++習語,但仍然存在多個嚴重的設計問題。例如。複製'std :: list ',並用指針進行輪換。 – MSalters

+0

順便說一下,消息中的「首次使用」意味着這是第一個調用未聲明函數的地方,編譯器不會報告後續使用。 – UncleBens

回答

2

你缺少像

some_linked_list->insert(some_node_ptr, ...) 

,或者你可以做了CopyData LinkedList類的成員:

void LinkedList::copyData(Node* sourcePtr, Node*& headPtr, Node*& tailPtr) 
+0

啊,謝謝我知道我錯過了一些東西:P它是LinkedList :: – Cheeseman

2

LinkedList::insert是你LinkedList類中的方法。您需要該類的一個實例來調用它。

LinkedList *myLinkedList = new LinkedList(); 
myLinkedList->insert(...); 
相關問題