我正在尝试对list<CMail>
进行排序(其中CMail是某个对象,对于这个问题的目的并不重要)。现在,我想对它进行排序。
我知道列表具有sort()函数,该函数可以使用标准operator
我的功能
bool comp( const CMail & x ) const;
返回,如果我们确实考虑a.comp(b); ,如果a 此函数也是CMail类的一部分,因此也是CMail namespace 的一部分。
现在,我想使用此排序功能,并且我正在使用
temp.sort( CMail::comp );
那里的温度是
list<CMail> temp;
但是,编译器不让我说
有人知道问题可能在哪里吗?提前致谢 :)
最佳答案
比较必须是可以比较列表中所有元素的二进制函子。成员函数CMail::comp
不满足要求。尝试非成员(member)。这可以根据您的成员CMail::comp
实现:
bool comp(const CMail& lhs, const CMail& rhs )
{
return lhs.comp(rhs);
}
然后
temp.sort(comp);
或者,使用lambda:
temp.sort([](const CMail& lhs, const CMail& rhs ){return lhs.comp(rhs);});