使用ostream从另一个类访问结构中的数据

时间:2013-09-21 18:56:27

标签: c++ struct nodes ostream

我想访问我的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;数据一样,但这也不起作用。

2 个答案:

答案 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,否则它将是未初始化的指针,并在取消引用时导致未定义的行为。