gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 07:02:41 40 4
gpt4 key购买 nike

我的 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)

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);
}
}

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

编辑:我忘了在类词中使用 friend 关键字。用于测试目的。 friend 类句子;

最佳答案

我不会派生自节点类。

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

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

class word
{
char** words;
};

既然你标记了这个 C++,我可能建议你使用标准的 C++ 集合 (std::vector) 而不是链表。

关于C++ 类在层次结构中没有数据成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22207588/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com