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

    [C++]Come passare le struct nelle funzioni?

    Raga vi mostro questo codice che ho scritto in C++:
    codice:
    //header file
    #ifndef LISTE_H
    #define LISTE_H
    #include <iostream>
    using namespace std;
    class Liste {
    public:
        void crealista();
        void stampalista(struct numeri);
    private:
        struct numeri
        {
            int x;
            numeri* nodo;
        };
    };
    
    #endif // LISTE_H
    codice:
    //source file
    #include "Liste.h"
    #include <iostream>
    using namespace std;
    
    void Liste::crealista()
    {
        int y;
        numeri* q=NULL;
        q=new numeri;
        q->nodo=NULL;
    
        cout << "Premi 1 per inserire un numero, altrimenti premi 0 " << endl;
        cin >> y;
        cout << endl;
    
        while(y==1)
        {
         q->nodo=NULL;
         int m;
         cout << "Inserisci il numero da salvare " << endl;
         cin >> m; cout << endl;
         numeri* p2=NULL;
         p2=new numeri;
         p2->x=m;
         p2->nodo=q;
         q=p2;
         cout << "Premi 1 per inserire un numero, altrimenti premi 0 " << endl;
         cin >> y;
         cout << endl;
        }
        numeri* m=q;
        stampalista(m);
    
    }
    
    void Liste::stampalista(numeri m )
    {
        while(m!=NULL)
        {
         cout << m->x << endl;
         m=m->nodo;
        }
    }
    La funzione stampa lista mi dà sempre errore in quanto non riesco a passargli bene la struct m. Qual'è il codice corretto per passare bene la lista? Inoltre, come si fà a passare la lista per valore (in modo che crei una copia invece di modificarmi il valore della lista originale) e per riferimento (in modo da, per esempio, una volta che ho creato la lista posso passarla per mettere in coda per esempio)?

    Grazie in anticipo

  2. #2
    Utente bannato
    Registrato dal
    Apr 2012
    Messaggi
    510
    codice:
    void Liste::stampalista(struct numeri m )
    {
        while(m!=NULL)
        {
         cout << m->x << endl;
         m=m->nodo;
        }
    }
    Un metodo non statico opera sempre sull' istanza dell' oggetto dal quale viene invocato.
    Se vuoi chiamarlo da una copia dell' oggetto che hai a disposizione, devi effettuare tu la copia 'manualmente'.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.