gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 03:58:02 26 4
gpt4 key购买 nike

好的,所以我有我的基本链接 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->data 是 Student 类型,并且我假设这会起作用,但事实并非如此。有什么我想念的吗?另外,当我尝试时:

ptr->data.display(out); 

(假设 ptr->data 是学生类型,它不起作用,这告诉我我做错了什么。

在此方面的帮助将不胜感激!

最佳答案

根据您在此处显示的代码,以下内容不起作用:

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;

关于C++ 类模板(类的队列),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2582323/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com