In realtà vista l'ora ho copiato il codice da un programma velocemente e non ho controllato se le variabili avevano lo stesso nome
cmq se serve a qualcuno la posto corretta:
//includere i vari header e namespace
struct Nodo{
Veicolo* v=NULL;
Nodo*next=NULL;
}
class Pila{
Nodo*testa;
public:
Pila(){testa=NULL;}
~Pila(){ Nodo*n=testa; while(n){ testa=testa->next; delete n; n=testa;}}
void push(Veicolo *w){
Nodo* k=new Nodo;
k->v=w;
if(testa==NULL){
testa=k;
testa->next==NULL;
}else{
k->next=testa;
testa=k;
}
}
};
nella pila ho eliminato la switch nella push come mi hai suggerito e quindi ho messo come argomento il puntatore alla classe base
//main
#include "Auto.h"
#include "Moto.h"
#include "Veicolo.h"
#include "Pila.h"
ecc.
int main(){
Veicolo *w;int i;Pila x;
do{
cout<<"1.Auto,2.Moto,0.Uscire: ";
cin>>i;
if(i==1){
Auto* p=new Auto; cin>>p; w=p; x.push(w);
}
if(i==2){
Moto* a=new Moto; cin>>a; w=a; x.push(w);
}
if(i!=1&&i!=2&&i!=0){
cout<<"Valore non corretto"<<endl;
}
}while(i!=0);
x.print();
cout<<"-------------------"<<endl;
system("PAUSE");
return 0;
}
adesso dovrebbe essere corretto, no?
Grazie mille per l'aiuto e auguri di natale