2013-06-12 45 views
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; 
     } 

} 
+4

什麼是編譯器錯誤?我猜你需要讓你的比較運算符'const':'bool operator <(const A&ref)const {...}'。 – juanchopanza

+0

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

+1

如果它沒有編譯,那麼實際的編譯器錯誤*可能*在尋找問題的解決方案時可能有很大的幫助,如果不是,那麼至少對於那些閱讀你的問題的人來說。對不起,只是一個簡單的* juanchopanza *評論upvote是不足以澄清這一點。 –

回答

11

讓它

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

謝謝它解決了這個問題。 – Rajeev