我有一个C ++程序,它组织了一系列我想要的大学课程。它通过从控制台获取输入(包括课程代码,描述等),按专业组织每个课程,然后将其全部输出到格式良好,易于阅读的HTML文件来实现。后来,我计划通过大量研究来细化清单。
我将每个课程作为一个对象实现,当我输入完信息后,它会被添加到列表中。当我完成所有信息后,list::sort
应按主要和代码对每个课程进行排序(例如,CSE 380在CSE 110之后,并且都在ECO 108之前)。之后的格式很容易。
要排序,我必须实现一个简单的函数,因为即使不这样做在技术上是有效的,我会得到一个奇怪的屁股错误,我猜是因为没有'<'我的课程班的操作员。我的功能看起来像这样;
bool courseCompare(Course course1, Course course2) { return course1.getCode() < course2.getCode(); }
getCode()
返回一个包含三个字母/数字格式的课程代码的小字符串(如“AMS 401”)。这显然是为了方便字母顺序。
我这样调用sort方法;
all_the_courses.sort(courseCompare);
all_the_courses
是一个列表。
但是,每当我使用std :: list时,程序就会停止。不崩溃,没有输出,只是坐在那里没有响应我输入任何东西并按Enter键。有什么想法吗?
答案 0 :(得分:2)
您是通过值而不是引用将参数传递给比较函数,因此错误可能在您的复制构造函数中。编写比较函数的常用方法是使用const引用,这样可以避免完全复制对象:
bool courseCompare(const Course &course1, const Course &course2)
答案 1 :(得分:1)
cout
(我之前应该使用它)揭示了这一点。对不起,大家好!