2012-08-23 8 views
1

값을 돌려주는 함수를 사용하여 표준 : : 벡터 :C++ 표준 : 일종의 나는 다음과 같은 기능을 가진 <code>Policy</code> 클래스가

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

관련 문제