如何解决如何在C ++中显示将结构数据作为数据获取的链表?
我有这个结构,并在链接列表类中对其进行了初始化,但是我不确定如何显示它:
struct CourseData {
string CourseID,MaxCapacity,CurrentCapacity ;
string CourseName,InstructorName,CourseSection,CourseLocation,ListOfStudents;
};
class CourseNode {
private:
CourseData elem;
//
CourseNode* next;
public:
CourseNode(CourseData elem) : elem(elem)
{}
friend class Courses ;
};
class Courses {
private:
CourseNode *head;
public:
Courses();
~Courses();
该代码应更改为什么?输出错误:
void Courses::display() const
{
CourseNode *ptr=head;
cout<<"Head->";
while(ptr!=NULL)
{
cout<<ptr->elem<<"->";
ptr=ptr->next;
}
cout<<"Null"<<endl;
}
解决方法
您的Courses::display()
方法保持不变。真正的问题是
ptr->elem
是一个CourseData
,display()
试图通过std::cout
原样传递给operator<<
,但是您没有operator<<
为CourseData
实现的,编译器会抱怨,例如:
prog.cpp: In member function ‘void Courses::display() const’: prog.cpp:39:13: error: no match for ‘operator<<’ (operand types are ‘std::ostream’ {aka ‘std::basic_ostream<char>’} and ‘CourseData’) cout<<ptr->elem<<"->"; ~~~~^~~~~~~~~~~
因此,您需要添加该运算符,例如:
struct CourseData {
string CourseID,MaxCapacity,CurrentCapacity ;
string CourseName,InstructorName,CourseSection,CourseLocation,ListOfStudents;
};
ostream& operator<<(ostream &os,const CourseData &data) {
// print data's fields to the os stream as needed...
return os;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。