¿Cómo usar std :: find / std :: find_if con un vector de objetos de clase personalizados?

Tengo una clase que representa a un usuario llamadoNick y quiero usarstd::find_if en él, donde quiero encontrar si el vector de la lista de usuarios tiene un objeto incluido con el mismo nombre de usuario que ingresé. Hice algunos intentos tratando de crear una nuevaNick objeto para el nombre de usuario que quiero probar y sobrecargar el== operator y luego tratando de usarfind/find_if en el 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";
}

He sobrecargado el== operator así que comparar Nick == Nick2 debería funcionar, pero la función devuelveerror C2678: binary '==' : no operator found which takes a left-hand operand of type 'Nick' (or there is no acceptable conversion).

Aquí está mi clase de Nick para referencia:

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

Respuestas a la pregunta(6)

Su respuesta a la pregunta