我正在尝试对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);});

10-08 03:37