返回指向链表类中的struct的指针

时间:2015-01-23 16:45:48

标签: c++ pointers struct linked-list

我正在尝试编写一个链接列表类,其中包含一些基本功能,如添加节点,删除节点和在列表中递归搜索。我已经将列表的头部定义为私有变量,但我需要为递归搜索函数访问它,所以我尝试定义一个GetHead()函数,它将返回指向head的指针。但是我在NetBeans中编译时遇到了一些麻烦。

这是类标题

class List{
private:

    typedef struct node{
        int data;
        node* next;
    }*nodePtr;

    nodePtr head;
    nodePtr curr;
    nodePtr temp;

public: 
    List();
    void AddNode(int addData);
    void DelNode(int delData);
    void PrintList();
    void SearchRecursive(nodePtr Ptr, int searchVal);
    nodePtr GetHead();
};

GetHead()函数如下:

nodePtr List::GetHead(){
    return head;
}

当我编译时,我得到了

error: unknown type name 'nodePtr'
error: cannot initialize return object of type 'int' 
       with an lvalue of  type 'nodePtr' (aka 'List::node *')

我是如何将指针返回结构节点的?

2 个答案:

答案 0 :(得分:4)

{p> nodePtrList中定义,因此您需要正确的范围:

List::nodePtr List::GetHead()
^^^^^^

答案 1 :(得分:0)

有两种方法可以进行编译:

1)您已在私有范围内的类中定义了一个结构....它将它隐藏在世界其他地方。 但正如juanchopanza指出的那样,你需要指定范围。

2)另一种方法是在类外部定义节点,它应该可以在不改变函数原型的情况下工作。

第一个会更好,因为除了链表类之外,世界其他地方都没有用它。