2012-08-23 64 views
1

我有一個Policy類用下面的函數一個std ::向量:C++的std ::排序使用函數返回值

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); 

但我得到的錯誤:

"error: passing 'const Policy' as 'this' argument of 'double Policy::meanResponse()' discards qualifers"

能有人請解釋如何正確排序在這種情況下?

回答

4

您是否嘗試將meanResponse更改爲const?

double Policy::meanResponse()const; 

由於您將策略對象傳遞給帶有const引用的比較函數,因此您無法在其上調用非const方法。

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

+0

不,我還沒有。在函數的括號後面添加'const'有什麼作用?我從來沒有這樣做過。 – synaptik

+0

它將您的方法標記爲常量,這意味着您不會更改該方法中對象的狀態。 –

+0

啊!非常感謝! – synaptik