2011-09-05 65 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(...); 
相关问题