2010-07-09 5 views
9

मैं जीसीसी 4.3.3 का उपयोग कर रहा निम्न कोड को संकलित करने का प्रयास करने के: मैं इस त्रुटि मिलती हैकिसी सेट (C++) में डालने का प्रयास करते समय 'ऑपरेटर <' के लिए कोई मिलान नहीं है?

struct testStruct { 
int x; 
int y; 
bool operator<(testStruct &other) { return x < other.x; } 
testStruct(int x_, int y_) { 
    x = x_; 
    y = y_; 
} 
}; 


int main() { 
multiset<testStruct> setti; 
setti.insert(testStruct(10,10)); 
return 0; 
} 

:
/usr/include/c++/4.4/bits/stl_function.h|230|error : '__x < __y'
में 'ऑपरेटर <' के लिए कोई मिलान नहीं है, मुझे संदेह है कि मैं ऑपरेटर ओवरलोडिंग नहीं कर रहा हूं क्योंकि यह किया जाना चाहिए, लेकिन मैं बस सही समस्या को इंगित नहीं कर सकता। मुझसे यहां क्या गलत हो रहा है?

उत्तर

13

ऑपरेटर स्थिरांक हो सकता है और एक स्थिरांक संदर्भ लेना चाहिए:

bool operator<(const testStruct &other) const { return x < other.x; } 
+0

धन्यवाद, कि इसे हल। कॉन्स विधि के लिए – tsiki

+0

+1। –