Como usar std :: find / std :: find_if com um vetor de objetos de classe personalizados?

Tenho uma classe que representa um usuário chamadoNick e eu quero usarstd::find_if, onde quero descobrir se o vetor da lista de usuários tem um objeto incluído com o mesmo nome de usuário que eu passo. Fiz algumas tentativas tentando criar um novoNick objeto para o nome de usuário que eu quero testar e sobrecarregar o== operator e depois tentar usarfind/find_if no objeto:

    std::vector<Nick> userlist;
    std::string username = "Nicholas";

if (std::find(userlist.begin(), userlist.end(), new Nick(username, false)) != userlist.end())) {
    std::cout << "found";
}

Sobrecarreguei o== operator então comparar Nick == Nick2 deve funcionar, mas a função retornaerror C2678: binary '==' : no operator found which takes a left-hand operand of type 'Nick' (or there is no acceptable conversion).

qui está minha classe Nick para referência:

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);
    };
};

questionAnswers(6)

yourAnswerToTheQuestion