Я использую gcc 4.3.3, чтобы попытаться скомпилировать следующий код:
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’
Я подозреваю, что не делаю оператора, перегружающегося, поскольку он должен быть сделан, но я просто не могу точно определить точную проблему. Что я делаю неправильно здесь?
Оператор должен быть константным и принимать константную ссылку:
bool operator<(const testStruct &other) const { return x < other.x; }