A mi no me ha dado error ninguno
por usar parametros por valor
Precisamente, si los paso por valor, ¿por qué los devuelve modificados?
1. Compilo y ejecuto, sale el output de arriba.2. Descomento el destructor, salen numeros hasta que me canso y le doy a ctrl+c.3. Agrego las referencias mencionadas, sale el output de arriba.
EDIT: Ahora que lo pienso, es posible que a ti te salgan los números raros porque te accede a una memoria accesible por tu proceso, y en el mío no, ya que los valores que pueden tomar las referencias erróneas diferirán en cada PC.
Sí, tienes razón, sí que funciona mejor con el & (no sé cómo demonios lo puse antes ), pero da otro error de puntero corrupto al ejecutar el destructor de cola3 (sé que es cola3 porque primero pasa por cola1 y cola2):
nadie llama a delete por este new: aux = new cColaEnteros;
Si usaras punteros no habria problema
¿Cómo no? Ese objeto se asigna a la vuelta de la función (en este caso a cola3) y se llama a su destructor. ¿O me estoy equivocando?
EDIT: efectivamente, la depuración dice que sí se destruye. Es la misma dirección de memoria (del pCabecera) la que se la asigna a aux en el operador que a la hora de destruir cola3. ¡Por fin!
Está saliendo un código un poco lioso, no es más fácil implementarle una función a la clase para que concatene dos colas pasadas como parametros?
Una pregunta... porque no usais varios archivos... lo introducis todo en un mismo .cpp. Es mucho mejor y más cómodo luego revisar código si los separas en cabeceras (.h) y código (.cpp). En mi caso tengo colaIntDoble.h, colaIntDoble.cpp y main.cpp. Es solo por comentar... no reprocho nada xDDD