c++std::使用函数返回值对std::向量进行排序



我有一个Policy类,具有以下函数:

double Policy::meanResponse();

假设我有一个Policy对象的向量(myPolicies),我希望对其进行排序,并且我希望基于Policy::meanResponse()的值进行排序。我尝试过以下几种:

bool compare_by_function(const Policy& p1, const Policy& p2)
{
    return ( p1.meanResponse() < p2.meanResponse() );
}
sort(myPolicies.begin(), myPolicies.end(), compare_by_function);

但我得到了错误:

"错误:将'const Policy'作为'double Policy::meanResponse()'的'this'参数传递会丢弃限定符"

有人能解释一下在这种情况下如何正确排序吗

是否尝试将meanResponse更改为const?

double Policy::meanResponse()const;

由于您将Policy对象传递给带有const引用的compare函数,因此不能对它们调用非常量方法。

http://www.parashift.com/c++-faq lite/const-member-fs.html

最新更新