1
我想用模板std :: less使用用戶定義的類'A'。根據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 *評論upvote是不足以澄清這一點。 –