Lo del return es que lo estaba copiando a mano y me he equivocado . Las funciones implicadas son:
EDIT: dejo también el constructor de la clase, constructor de copia y desrtuctor.
Código [Seleccionar]
void Pila::Vaciar()
{
while(!Vacia())
Desapilar();
}
Código [Seleccionar]
void Pila::Copiar(Pila p)
{
Pila aux;
while (!p.Vacia())
{
aux.Apilar(p.Cimapila());
p.Desapilar();
}
while (!aux.Vacia())
{
Apilar(aux.Cimapila());
aux.Desapilar();
}
}
Código [Seleccionar]
void Pila::Apilar(int n)
{
accesos++;
if (cima >= max)
throw Pilallena();
else
{
cima ++;
v[cima] = n;
}
}
void Pila::Desapilar()
{
accesos++;
if (cima == -1)
throw Pilavacia();
else
cima--;
}
int Pila::Cimapila()
{
int res;
v[cima] = res;
accesos++;
return res;
}
EDIT: dejo también el constructor de la clase, constructor de copia y desrtuctor.
Código [Seleccionar]
Pila::Pila()
{
cima = -1;
max = 3;
accesos = 0;
v = new int[max];
}
Pila::Pila (const Pila & p)
{
cima = -1;
Copiar(p);
}
Pila::~Pila()
{
Vaciar();
}