я следующий код:«Нет функции соответствия» -ошибка при попытке вставить к множеству (C++)
class asd {
public:
int b;
asd() { b = rand() % 10; }
bool operator<(asd &other) { return b < other.b; }
};
int main() {
asd * c; c = new asd();
set <asd> uaua;
uaua.insert(c);
}
Но при запуске его, я получаю эту ошибку:
main.cpp|36|error: no matching function for call to ‘std::set<asd, std::less<asd>, std::allocator<asd> >::insert(asd*&)’|
Я использую g ++ 4.4.3
Может кто-нибудь, пожалуйста, скажите мне, где я иду не так? Я пытался взломать это на некоторое время, но, похоже, не может найти решение. Спасибо
Не связанный с вопросом: вы должны реализовать 'operator <' как свободную функцию, если это возможно, и если она реализована как метод (это правило справедливо для всех других методов), оно должно быть постоянным, так как оно не изменяет объект на который он применяет. –