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)而不是链接列表。