【发布时间】:2018-04-19 22:36:24
【问题描述】:
我有一个包含多个参数定义的对象 Studenti 的列表。 我想对这个学生列表进行排序,首先按他们的平均值,如果平均值相同,我会按字母顺序对它们进行排序。
在我的学生班级中,我声明了这个头函数:
bool mediaDescrescator(const&, const&);
就是这样实现的:
bool Studenti::mediaDescrescator(const Studenti& a, const Studenti& b)
{
if(a.medie_ != b.medie_)
{
return (a.medie_ > b.medie_);
}
return (a.nume_ > b.nume_);
}
medie_ 是 Studenti 的双重私人成员
nume_ 是 Studenti 的 std::string 私有成员
我主要有一个 Studenti 列表:
std::list<Studenti> listaStud_ = {stud1, stud2, stud3, stud4, stud5};
函数调用:
std::sort(listaStud_.begin(), listaStud_.end(), mediaDescrescator);
我的错误是:未在此范围内声明 mediaDescrescator。
我已经看到关于这种类型的其他主题,它们被声明为像我的一样,我什至尝试使用向量类型而不是列表。
mediaDescrescator 不带 () 调用,因为它必须作为函数指针或函数对象传递。
【问题讨论】: