我想访问我的struct类中创建的节点的输出。 现在我的代码将名称保存到每个节点。
节点1:Bob,Joe,Jill
节点2:杰夫,安迪,凯文,路易斯
节点3:Heather,Andy,Candy
但是,我试图弄清楚如何从ostream运算符输出它们
struct node {
node(string value="") {data=value; next=NULL; }
string data;
node *next;
};
class list {
public:
list(int N=0, int value=0);
~list();
friend ostream & operator << (ostream &, const list &);
private:
int N;
node *head;
};
ostream& operator << (ostream & out, const list & list_def)
{
//out << list_def.data;
}
int main(){
list names[3];
cout << names[0];
}
名称保存在节点中,数据保存每个名称。如您所见,我尝试了list_def.data,但它没有输出它们。我觉得它会像list_def.node-&gt;数据一样,但这也不起作用。
答案 0 :(得分:1)
可能还有其他问题,但是:
ostream& operator << (ostream & out, const list & list_def)
{
node *ptr = head;
while(ptr){
out<<ptr->data;
ptr=ptr->next;
}
return out;
}
如果正确定义了list
类的构造函数,将起作用。
答案 1 :(得分:1)
list
类没有data
成员,但node
类有成员。你必须访问,例如head->data
。
或者更确切地说,您可能应该从head
开始循环遍历列表,并打印当前节点data
成员。像:
for (node* current = head; current != nullptr; current = current->next)
out << current->data;
请注意,必须在构造函数中初始化head
,否则它将是未初始化的指针,并在取消引用时导致未定义的行为。