C ++类模板(类的队列)

时间:2010-04-06 02:23:40

标签: c++ data-structures

好的,所以我的基本链接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;数据属于学生类型,它不起作用,告诉我我做错了。

非常感谢帮助!

1 个答案:

答案 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;