Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    32

    Problema con sottoclassi

    Salve a tutti
    Vorrei chiedere se qualcuno mi potrebbe dare una mano con le sottoclassi. In poche parole ho una superclasse per la gestione delle Pile che contiene solo metodi virtuali e il metodo di stampa (non virtuali). Non ho dichiarato la parte "private" in quanto le sottoclassi hanno attributi diversi. Una sottoclasse permette la gestione della pila con le liste e un'altra permette di gestirla con un vettore.

    Il metodo di stampa ereditato dalle 2 sottoclassi dovrebbe avere all'interno una variabile di tipo "Pila" da utilizzare per salvarci temporaneamente i dati estratti dalla pila da stampare. Le classi sono state dichiarate in questo modo:

    SUPERCLASSE
    codice:
    template <class T>
    class Pila
    {
      public:
        typedef T tipoelem;
       
        virtual void creaPila() =0;
        virtual bool pilaVuota() =0;
        virtual tipoelem leggiPila() =0;
        virtual void fuoriPila() =0;
        virtual void inPila(tipoelem a) =0;
     
        void stampaPila();
    };
    mentre le 2 sottoclassi sono:
    PILA CON VETTORE
    codice:
     
    template <class T>
    class pileV : public Pila<T>
    {
       public:      
           
          typedef typename Pila<T>::tipoelem tipoelem;        
          pileV();
          void creaPila();
          bool pilaVuota();
          tipoelem leggiPila();
          void fuoriPila();
          void inPila(tipoelem);
          //void stampaPila();
       private:
           tipoelem *elementi;
           int MAXLUNGH;
           int testa;
    };
    PILA CON LISTA
    codice:
     
    template <class T>
    class pileL : public Pila <T>
    {
    public:
         typedef typename Pila<T>::tipoelem tipoelem;        
         typedef typename ListaP<T>::posizione posizione;
         
         pileL();
         //~pileL();
         
         void creaPila();
         bool pilaVuota();
         tipoelem leggiPila();
         void fuoriPila();
         void inPila(tipoelem a);
              
    private:
         ListaP<tipoelem> elementi;
    	 int lung;
    	 posizione testa;
    };
    Il metodo di stampa è il seguente:
    codice:
    template <class T>
    void Pila<T>::stampaPila()
    {
      Pila<T> l1; 
      while( !pilaVuota() )
      {
         cout << leggiPila() << endl;
         l1.inPila(leggiPila());
         fuoriPila();
      }
      
      while( !l1.pilaVuota() )
      {
         inPila(l1.leggiPila());
         l1.fuoriPila();
      }
    
    }
    Il problema è questo: nel metodo di stampa la dichiarazione della variabile l1 di tipo Pila<T> non è accettata. Come posso fare per generalizzare la variabile (in quanto la variabile è troppo "generale") ?

  2. #2

    Re: Problema con sottoclassi

    Originariamente inviato da guns90
    codice:
    template <class T>
    class Pila
    {
      public:
        typedef T tipoelem;
       
        virtual void creaPila() =0;
    codice:
    template <class T>
    void Pila<T>::stampaPila()
    {
      Pila<T> l1; 
    ...
    Come posso fare per generalizzare la variabile (in quanto la variabile è troppo "generale")?
    Pila avendo metodi virtuali puri, è una classe astratta pura che quindi non può essere giustamente istanziata.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    32
    okok
    grazie mille per l'informazione. Mi hai evitato ore e ore di testate al muro per capire se si poteva fare

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.