Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [c++] Lista di dati strutturati, come?

    Salve a tutti,
    ho un problema nel fare una lista di dati strutturati. Un problema "logico/sintattico" più che altro.

    Questo qui è il codcie della mia lista, un oggetto creato da me (con l'uso di tempalte): http://www.ideone.com/IRCxT

    http://www.ideone.com/P5jmq


    Ora se io in un'altra realizzazione che sfrutta le liste, ovvero gli alberi binari, creo un tipo strutturato di questo genere:

    codice:
        struct _cella{
            Nodo genitore;
            Nodo sinistro;
            Nodo destro;
            value_type valore;
          };
    
        typedef struct _cella Cella;
    E quindi creassi un oggetto del tipo:

    codice:
    ListaP<Cella> spazio;
    Come faccio poi a riferirmi al campo "genitore" della struttura dell'elemento in posizione "xyz" della mia lista?

    Cioè se normalmente do il comando "mialista.leggilista(posizione)" adesso come potrei fare? oppure mi manca "quaclosa" per farlo funzionare?

    Vi ringrazio in anticipo,
    Neptune.
    "Estremamente originale e fantasioso" By darkiko;
    "allora sfiga crepuscolare mi sa che e' meglio di atmosfera serale" By NyXo;
    "per favore, già è difficile con lui" By fcaldera;
    "se lo apri te e invece di "amore" ci metti "lavoro", l'effetto è lo stesso" By fred84

  2. #2
    Ho provato a fare ciò che pensavo, ovvero a passare un tipo strutturato come argomento del template e mi da il seguente errore:

    codice:
    Description	Resource	Path	Location	Type
    template argument for 'template<class T> class ListaP' uses local type 'main(int, char**)::_cella'	main.cpp	/Liste_3	line 22	C/C++ Problem
    Questo mi fa pensare che una cosa del genere non è fattibile

    Ma a questo punto come posso aggirare la cosa?

    Se vado nella definizione di "cella" e al posto di un singolo elemento direttamente come tipo di dato strutturato poi posso fare che la mia funzione "leggilista" mi legge e mi ritorna un dato strutturato o avrò anche li problemi di questo tipo?

    Oppure mi tocca aggiungere altri metodi per poter leggere singolarmente ogni elemento? Ovvero fare un leggigenitore, leggisinistro, leggidestro e via discorrendo?

    Ma a questo punto tutti quei bei template e appena voglio fare una lista di dati strutturati devo sconvolgere tutto? O c'è una strada meno invasiva da poter seguire?
    "Estremamente originale e fantasioso" By darkiko;
    "allora sfiga crepuscolare mi sa che e' meglio di atmosfera serale" By NyXo;
    "per favore, già è difficile con lui" By fcaldera;
    "se lo apri te e invece di "amore" ci metti "lavoro", l'effetto è lo stesso" By fred84

  3. #3
    Come non detto gli dava fastidio solo che fosse un tipo locale, portandolo fuori dal main me l'ha passato.
    Ora però resta ancora il problema di come faccio a riferimi ad un determinato elemento del tipo strutturato.
    "Estremamente originale e fantasioso" By darkiko;
    "allora sfiga crepuscolare mi sa che e' meglio di atmosfera serale" By NyXo;
    "per favore, già è difficile con lui" By fcaldera;
    "se lo apri te e invece di "amore" ci metti "lavoro", l'effetto è lo stesso" By fred84

  4. #4
    Come non detto, funziona normalemente un

    codice:
    l1.leggilista(l1.preclista(pos)).destro
    Ora ancora un ultimo dubbio irreversibile.

    Ho il seguente codcie:

    codice:
    #include "ListaP.h"
    #include "ListaV.h"
    #include "ListaC.h"
    using namespace std;
    
    struct _cella{
    	ListaP<Cella<int>* >::posizione genitore;
    	ListaP<Cella<int>*>::posizione destro;
      };
    typedef struct _cella tempio;
    
    int main(int argc, char *argv[])
    {
    
        ListaP< tempio > l1;
        ListaP<tempio>::posizione pos;
        pos = l1.primoLista();
    
        tempio t1,t2;
        t1.genitore = pos;
        t1.destro = pos;
    
        l1.inslista(t1, pos);
    
        t2 = l1.leggilista(l1.preclista(pos));
        cout << t2.genitore << t2.destro<< endl;
        cout << l1.leggilista(l1.preclista(pos)).destro;
    }
    Mi da il seguente errore:

    codice:
    Description	Resource	Path	Location	Type
    cannot convert 'Cella<_cella>*' to 'Cella<Cella<int>*>*' in assignment	main.cpp	/Liste_3	line 29	C/C++ Problem
    Ovvero non sa fare il cast da cella<_cella> che è il mio dato strutturato a cella<int>.

    Il punto è: Come faccio ad utilizzare il tipo che sto dichiarando nella dichiarazione stessa? Immagino che non si può e quindi come posso aggirare la cosa?

    Ho provato a farlo e mi dice comunque:

    codice:
    Description	Resource	Path	Location	Type
    cannot convert 'Cella<_cella>*' to 'Cella<Cella<_cella> >*' in assignment	main.cpp	/Liste_3	line 29	C/C++ Problem
    "Estremamente originale e fantasioso" By darkiko;
    "allora sfiga crepuscolare mi sa che e' meglio di atmosfera serale" By NyXo;
    "per favore, già è difficile con lui" By fcaldera;
    "se lo apri te e invece di "amore" ci metti "lavoro", l'effetto è lo stesso" By fred84

  5. #5
    Come non detto, ammette tranquillamente la cosa, dovevo solo dichiararlo bene

    ovvero cosi:

    codice:
    ListaP<_cella>::posizione
    "Estremamente originale e fantasioso" By darkiko;
    "allora sfiga crepuscolare mi sa che e' meglio di atmosfera serale" By NyXo;
    "per favore, già è difficile con lui" By fcaldera;
    "se lo apri te e invece di "amore" ci metti "lavoro", l'effetto è lo stesso" By fred84

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.