The Inicializar_Pilha
function should be given a pointer to pilha
and not pilha
, so that it can change the object it has in main
.
Soon this function should look like this:
void Inicializar_Pilha (pilha *pi, int tam_max) //agora com * para ser ponteiro
{
pi->v=new int [tam_max]; //-> em vez de . porque é ponteiro
pi->topo=-1; //agora com ->
pi->tam_max=tam_max;//agora com ->
//return; //return no fim de uma função void não faz sentido
}
And the main
something like:
int main(){
pilha p1;
Inicializar_Pilha(&p1, 10); //aqui passado com & para ser o endereço do objeto
cout<<p1.topo<<" "<<p1.tam_max; //-1 10
return 0;
}
See it working on Ideone
The problem is that since you have in your code the
InicializarPilha
function receives a copy of the original object it has in
main
, so changes made to the function are done in a copy and do not affect
pilha
is in
main
.
Related reading that I recommend