2013-06-12 4 views
1

사용자 정의 클래스 'A'를 std :: less 템플릿과 함께 사용하려고합니다. 또한 std::less에 따라 필요에 따라 < 연산자를 무시하는 함수가 있습니다. 이 코드는 컴파일되지 않습니다.std :: less 컴파일 문제

#include<iostream> 
#include<functional> 
using namespace std; 
class A{ 
public: 
     A(int x=0):a(x){} 
     int a; 
     bool operator<(const A& ref){ 
       return a<ref.a; 
     } 
}; 
int main() 
{ 
     A a1(1); 
     A a2(2); 
     std::less<A> comp; 
     if(comp(a1,a2)){ 
       cout<<"less"<<endl; 
     } 
     else{ 
       cout<<"more"<<endl; 
     } 

} 
+4

확인? 나는 당신이 비교 연산자'const'를 만들 필요가 있다고 생각합니다 :'bool operator <(const A & ref) const {...}'. – juanchopanza

+0

['const'-correctness] (http://ideone.com/8KWZ6V) –

+1

컴파일하지 않으면 실제 컴파일러 오류 *가 문제의 해결책을 찾는데 큰 도움이 될 수 있습니다. 만약에 당신을 위해 아닙니다 그 후에 적어도 당신의 질문을 읽는 그들을 위해. 죄송 합니다만, * juanchopanza *의 간단한 언급은 이것을 분명히하기에 충분하지 않습니다. –

답변

11

는 컴파일러 오류가 무엇입니까

bool operator<(const A& ref) const{ 
      return a<ref.a; 
    } 
+0

감사합니다. 문제가 해결되었습니다. – Rajeev