Как использовать std :: find / std :: find_if с вектором объектов настраиваемого класса?

У меня есть класс, представляющий пользователя по имени 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);
    };
};
26
задан Speed 3 August 2011 в 22:37
поделиться