У меня есть класс, представляющий пользователя по имени Nick
и я хочу использовать на нем std :: find_if
, где я хочу найти, есть ли в векторе списка пользователей объект с тем же именем пользователя, которое я передал. Я сделал несколько попыток, пытаясь создать новый Объект Nick
для имени пользователя, которое я хочу протестировать, и перегрузка оператора ==
, а затем попытка использовать find / find_if
для объекта:
std::vector<Nick> userlist;
std::string username = "Nicholas";
if (std::find(userlist.begin(), userlist.end(), new Nick(username, false)) != userlist.end())) {
std::cout << "found";
}
У меня есть перегружен оператор ==
, поэтому сравнение Nick == Nick2 должно работать, но функция возвращает ошибку C2678: двоичный '==': не найден оператор, который принимает левый операнд типа 'Nick '(или нет допустимое преобразование)
.
Вот мой класс Nick для справки:
class Nick {
private:
Nick() {
username = interest = email = "";
is_op = false;
};
public:
std::string username;
std::string interest;
std::string email;
bool is_op;
Nick(std::string d_username, std::string d_interest, std::string d_email, bool d_is_op) {
Nick();
username = d_username;
interest = d_interest;
email = d_email;
is_op = d_is_op;
};
Nick(std::string d_username, bool d_is_op) {
Nick();
username = d_username;
is_op = d_is_op;
};
friend bool operator== (Nick &n1, Nick &n2) {
return (n1.username == n2.username);
};
friend bool operator!= (Nick &n1, Nick &n2) {
return !(n1 == n2);
};
};