tengo una clase llamada Location
y tenía que añadir un CArray a sus variables miembro. Este cambio provocó la necesidad de sobrecargar el operador de asignación.C++ sobrecarga operador de asignación
¿Hay alguna manera de copiar todas las variables en este tipo de clase que se estaban copiando antes de realizar el cambio y simplemente agregar el código adicional para copiar CArray sin copiar cada variable de miembro individualmente?
Location& Location::operator=(const Location &rhs)
{
// Only do assignment if RHS is a different object from this.
if (this != &rhs)
{
//Copy CArray
m_LocationsToSkip.Copy(rhs.m_LocationsToSkip);
//Copy rest of member variables
//I'd prefer not to do the following
var1 = rhs.var1;
var2 = rhs.var2;
//etc
}
return *this;
}
Así que usted quiere, en efecto, llamar al operador de asignación generado por el compilador? ¿'CArray' tiene un operador de asignación? –
Tiene un constructor de copia pero no un operador de asignación. No estoy seguro de poder llamar al operador de asignación generado por el compilador ya que agregué una variable miembro de CArray. –
No, no puede llamar al compilador generado porque ya no se genera cuando proporciona uno (no porque haya agregado un miembro CArray; lo único que cambia es que el compilador generado para su clase no puede llamar al uno para CArray porque no existe). Me temo que no hay forma de hacer esto. –