Estoy intentando algo como esto:¿Pueden los operadores de asignación de C++ ser funciones gratuitas?
Foo & operator=(Foo & to, const Bar &from);
Pero estoy recibiendo este error:
E2239 'operator =(Foo &, const Bar &)' must be a member function
¿Existen limitaciones en la que los operadores pueden/no pueden ser definidas como funciones gratuitos, y si es así , ¿por qué?
¿Alguna otra razón para hacerlo? Tiene sentido para el operador = ser una función miembro, después de todo, es una de las 'tres 'funciones de control de copia (concretamente copy constructor, operator = y destructor). Pero, ¿por qué para otros? – zoujyjs
@zoujyjs los operadores deben tener acceso a las variables miembro internas (posiblemente privadas). Las funciones gratuitas no tendrán dicho acceso. – iheanyi
@iheanyi Pero podemos definir la función libre como un amigo de la clase –