Newsgroup: it.comp.lang.c++
Titolo: Pila con puntatori

Ciao a tutti ho dei problemi su questa pila.
se stampo direttamente la pila, senza inserire nessun elemento, mi 
dovrebbe uscire "La pila e' vuota" ed invece nulla.
poi in pratica quando visualizzo la pila, perdo i valori inseriti, in 
quanto viene invocato il metodo fuoriPila, e se non volessi perderli ?
grazie a tutti.
#include <iostream>
using namespace std;
class Nodo{
       private:
          Nodo *next;
          int value;
       public:
          Nodo();
          ~Nodo();
          int getValue();
          Nodo *getNext();
          void setValue(int );
          void setNext(Nodo *);
};
       //costruttore
       Nodo::Nodo(){
           this->next = 0;
           return;
       }
       //distruttore
       Nodo::~Nodo(){
           return;
       }
       void Nodo::setValue(int val){
            value = val;
       }
       int Nodo::getValue(){
           return value;
       }
       Nodo *Nodo::getNext(){
            return next;
       }
       void Nodo::setNext(Nodo *n){
            next = n;
       }
class Pila{
       private:
          int nNodi;
          Nodo *first;
       public:
          Pila();
          ~Pila();
          void creaPila();
          int pilaVuota();
          int leggiPila();
          void inPila(int );
          void fuoriPila();
};
       //costruttore
       Pila::Pila(){
           return;
       }
       //distruttore
       Pila::~Pila(){
           return;
       }
       void Pila::creaPila(){
            this->first = 0;
            this->nNodi = 0;
       }
       int Pila::pilaVuota(){
            return first == NULL;
       }
       int Pila::leggiPila(){
           if(pilaVuota()){
              cout << "La pila e' vuota" << endl;
           }
           else{
              return this->first->getValue();
           }
       }
       void Pila::inPila(int elem){
            Nodo *newNodo = new Nodo();
            newNodo->setNext(this->first);
            first = newNodo;
            newNodo->setValue(elem);
            nNodi++;
            return;
       }
       void Pila::fuoriPila(){
            if(nNodi > 0){
               Nodo *temp;
               temp = this->first;
               this->first = temp->getNext();
               delete temp;
               nNodi--;
               return;
            }
            else{
               cout << "Si e' tentato di cancellare un elemento da una 
pila vuota";
            }
       }
int main(){
     Pila p;
     int scelta;
     int valore;
     char x;
     do{
         cout << "--------- Menu --------" << endl;
         cout << "1. Inserisci elementi nella pila." << endl;
         cout << "2. Estrai una elemento dalle pila" << endl;
         cout << "3. Stampa pila" << endl;
         cout << "8. esci" << endl;
         cout << "Inserisci scelta: ";
         cin >> scelta;
         switch(scelta){
            case 1:
                 p.creaPila();
                 cout << "Inserisci un elemento della pila: " << endl;
                 cout << "Inserisci 0 per terminare." << endl;
                 cout << ": ";
                 cin >> valore;
                 while(valore != 0){
                     p.inPila(valore);
                     cout << "Inserisci un elemento della pila: " << endl;
                     cout << "Inserisci 0 per terminare." << endl;
                     cout << ": ";
                     cin >> valore;
                 }
            break;
            case 2:
                 cout << "da fare" << endl;
                 break;
            case 3:
                 cout << endl;
                 cout << "Valori inseriti nella Pila: " << endl;
                 while(!p.pilaVuota()){
                    cout << p.leggiPila() << "\n";
                    p.fuoriPila();
            }
            break;
            case 8:
                 break;
            default:
               cout << "scelta non valida" << endl;
         }
     }
     while(scelta != 8);
     system("PAUSE");
     return 0;
}

        }
Questa funzione sta usurpando il posto del costruttore della classe
Pila.
[...]
Spero che questi appunti ti possano essere utili. Ho tralasciato di
commentare il resto perchè penso che di averti fornito un po' di
argomenti.
Ciao, Ugo