返回指向链表中结构的指针 class

Returning a pointer to struct in a linked list class

我正在尝试编写一个链表 class,其中包含一些基本功能,例如添加节点、删除节点和在列表中递归搜索。我已将列表的头部定义为私有变量,但我需要访问它以用于递归搜索功能,因此我尝试定义一个 GetHead() 函数,它将 return 指向头部的指针。但是我在 NetBeans 中编译它时遇到了一些问题。

这里是classheader

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 *')

我return指向结构节点的指针有问题吗?

nodePtr定义在List,所以你需要正确的作用域:

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

有两种编译方式:

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

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

第一个会更好,因为除了你的链表之外,世界其他地方对它毫无用处class。