好的,所以我的基本链接Queue类有基本功能,如front(),empty()等。我已将其转换为模板。现在,我还有一个名为Student的课程。其中包含2个值:学生姓名和学生ID。我可以用以下代码打印出学生..
Student me("My Name", 2);
cout << me << endl;
这是我对学生的显示功能:
void display(ostream &out) const {
out << "Student Name: " << name << "\tStudent Id: " << id
<< "\tAddress: " << this << endl;
}
现在它工作正常,你可以看到基本的输出。现在我正在宣布这样的队列..
Queue<Student> qstu;
在这个队列中存储数据很好,我可以添加新值等等。现在我要做的就是打印出我的整个学生队列:
cout << qstu << endl;
但它只是返回一个地址..这里是我的队列显示功能。
void display(ostream & out) const {
NodePointer ptr;
ptr = myFront;
while(ptr != NULL) {
out << ptr->data << " ";
ptr = ptr->next;
}
out << endl;
}
现在,基于此,我假设ptr-&gt;数据是学生类型,我认为这可行,但事实并非如此。有什么我想念的吗?此外,当我尝试:
ptr->data.display(out);
(假设ptr-&gt;数据属于学生类型,它不起作用,告诉我我做错了。
非常感谢帮助!
答案 0 :(得分:2)
根据您在此处显示的代码,以下内容不起作用:
Student me("My Name", 2);
cout << me << endl;
如果您希望能够将某些内容插入到这样的流中,则需要为operator<<
的类型重载ptr->data
。这种重载运算符的声明看起来像
std::ostream& operator<<(std::ostream& o, const Student& s);
如果ptr->data
是指针,那么在将其插入流之前需要取消引用它:
cout << *ptr->data;