C 类在层次结构中没有数据成员



lll的节点类,从中得出的类

class node
{
    public:
    node();
    ~node();
    node *& getNext();
    protected:
    node * next;
};
class word: public node
{
    public:
    word();
    ~word();
    protected:
    char ** words; //an array of char pointers
};

我还有另一个类

class sentence
{   
    public:
        sentence(); 
        ~sentence();
        void insert(node *& head, char *& word_to_add);
        sentence *& operator+=(char *& sentence_to_add);
        void remove(char *& word_to_remove);
        void testing(sentence *& s);
        void display();
        void removeAll();
    protected:
        node * head;
};

这是我对插入功能的实现

void sentence::insert(node *& head, char *& word_to_add)
{
    if(!head)
    {
        head = new word;
        insert(head, word_to_add); 
    }
    else
    {
        for(int i = 0; i < MAX_WORD; ++i)
        {
            if(!head->words[i])
            {
                head->words[i] = new char[strlen(word_to_add)+1];
                strcpy(head->words[i], word_to_add);
                cout << head->words[i] << endl;
                return;
            }
        }
        insert(head->getNext(), word_to_add); 
    }
}

我得到错误类节点没有数据成员名为单词。但是,如果我要将原型void insert(node *& head, char *& word_to_add);更改为void insert(word *& head, char *& word_to_add);,它将说Word接下来没有数据成员。我有点卡住了,因为我在以前的程序中这样做了,而且效果很好。我想知道我在做什么错,所以如果有人可以指出这一点,那就太好了!

编辑:我忘了包括我在class Word中使用的朋友关键字。用于测试目的。friend class sentence;

我不会从节点类派生。

节点是否是通用的,并包含指向某些数据(word)的指针,而不是直接在节点中使用数据?

class node
{
  node* next;
  word data;
};
class word
{
   char** words;
};

由于您标记了此C ,我可能建议您使用标准的C 集合(std :: vector)而不是链接列表。

最新更新