返回指向链表中结构的指针 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。
我正在尝试编写一个链表 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。