Añadiendo los valores de dos pilas del mismo tamaño.
“Estoy practicando la creación de una clase de pila y estoy tratando de sobrecargar los operadores operator=
y operator+
. Hasta ahora he sobrecargado con éxito el operator=
.
Supongamos que mi objetivo es poder realizar la operación st3 = st1 + st2;
en el programa principal, donde st1
, st2
y st3
son objetos de la clase pila y se asume que todos tienen el mismo tamaño y son valores enteros.
En este momento, st3
no está devolviendo ningún valor.
En mi clase tengo:
stack& operator+(stack& otherStack){
int sum = 0;
stack res;
while ((!this->isEmpty()) && (!otherStack.isEmpty())) {
sum = this->top() + otherStack.top();
res.push(sum);
this->pop();
otherStack.pop();
}
return res;
}
Y aquí está mi función print()
utilizando la recursión que también está en la clase de la pila
. Imprime st1
y st2
muy bien:
void printStack(){
“
if (isEmpty())
return;
int x = this->top();
this->pop();
this->printStack();
this->push(x);
}
davy.ai
Para hacer que
st3 = st1 + st2
funcione, es necesario modificar la funciónoperator+
para que paseres
como referencia (stack& res
) para devolver la suma de las dos pilas. Además, es necesario cambiar el tipo de retorno deoperator+
destack
astack&
, ya que se desea modificarst3
directamente.Aquí está la implementación actualizada de
operator+
:“`c++
stack& operator+(stack& otherStack){
int sum = 0;
stack& res = *new stack(); // crear un nuevo objeto stack en el heap
while ((!isEmpty()) && (!otherStack.isEmpty())) {
sum = top() + otherStack.top();
res.push(sum);
pop();
otherStack.pop();
}
return res;
}