如何编写公共函数来返回链表的头指针?

时间:2009-12-12 11:19:41

标签: c++ struct linked-list

class Newstring
{
public:
    Newstring();
    void inputChar ( char);
    void display ();
    int length ();
    void concatenate (char);
    void concatenate (Newstring);
    bool substring (Newstring);
    void createList ();
    Node * getHead (); // error
private:
    struct Node
    {
        char item;
        Node *next; 
    };
    Node *head;

};

我收到语法错误:缺少';'在'*'之前我的getHead函数的声明(是的,我想不出一个更好的名字)。此函数的目的是返回头指针。

5 个答案:

答案 0 :(得分:3)

在使用之前声明节点。

答案 1 :(得分:2)

您必须在getHead();

之上声明Node结构
class Newstring
{

public:
    struct Node
    {
        char item;
        Node *next; 
    };
    Newstring();
    void inputChar ( char);
    void display ();
    int length ();
    void concatenate (char);
    void concatenate (Newstring);
    bool substring (Newstring);
    void createList ();
    Node * getHead (); // error
private:

    Node *head;

};

答案 2 :(得分:2)

要回答Brandon关于将结构保密,或者在添加声明时保留当前代码,方法是:

class Newstring
{
    struct Node; // here the declaration
public:

    Newstring();
    void inputChar ( char);
    void display ();
    int length ();
    void concatenate (char);
    void concatenate (Newstring);
    bool substring (Newstring);
    void createList ();
    Node * getHead (); // error
private:
    struct Node
    {
        char item;
        Node *next; 
    };
    Node *head;

};

答案 3 :(得分:1)

Node * getHead()

遇到getHead()时,编译器无法获得Node的定义。

  struct Node
    {
        char item;
        Node *next; 
    };

在使用Node之前先定义它。

class Newstring
{
private:
    struct Node
    {
        char item;
        Node *next; 
    };
    Node *head;
public:
    Newstring(); ...
    Node * getHead (); 

答案 4 :(得分:1)

另一种方法是在Node

之前放置struct来转发声明Node
    :
    void createList ();
    struct Node * getHead ();
private:
    struct Node
    {
        :