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;
}
}
확인? 나는 당신이 비교 연산자'const'를 만들 필요가 있다고 생각합니다 :'bool operator <(const A & ref) const {...}'. – juanchopanza
['const'-correctness] (http://ideone.com/8KWZ6V) –
컴파일하지 않으면 실제 컴파일러 오류 *가 문제의 해결책을 찾는데 큰 도움이 될 수 있습니다. 만약에 당신을 위해 아닙니다 그 후에 적어도 당신의 질문을 읽는 그들을 위해. 죄송 합니다만, * juanchopanza *의 간단한 언급은 이것을 분명히하기에 충분하지 않습니다. –