1

我想访问在我的结构类中创建的节点的输出。现在我的代码正在将名称保存到每个节点中。

节点 1:鲍勃、乔、吉尔

节点 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->data,但这也不起作用。

4

2 回答 2

1

可能还有其他问题,但是:

ostream& operator << (ostream & out, const list & list_def)
{
 node *ptr = head;
 while(ptr){
   out<<ptr->data;
   ptr=ptr->next;
 }
 return out;
}

如果list正确定义了类的构造函数,它将起作用。

于 2013-09-21T19:02:26.737 回答
1

list班级没有成员,datanode班级有。您必须访问例如head->data.

或者更确切地说,您可能应该遍历从 开始的列表head,并打印当前节点data成员。喜欢:

for (node* current = head; current != nullptr; current = current->next)
    out << current->data;

请注意,您必须head在构造函数中进行初始化,否则它将是一个未初始化的指针,并在您取消引用它时导致未定义的行为。

于 2013-09-21T19:02:56.580 回答