Approccio esercizio

di il
42 risposte

42 Risposte - Pagina 2

  • Re: Approccio esercizio

    array di struct
    Ma il mio codice d'esempio l'hai letto?
  • Re: Approccio esercizio

    Il tuo si, mi trovo, però non mi funziona, ora cercavo di capire quello che proponeva skynet
  • Re: Approccio esercizio

    Non é che ho scoperto l'acqua calda. L'array lo fai come ti ha detto oregon ovvero record inventario[100];
    Cmq ne lui ne io non riusciamo a comprendere il perche non ti funziona. Fai meglio a mostrare tutto quello che hai scritto.
  • Re: Approccio esercizio

    poel ha scritto:


    il tuo si, mi trovo, però non mi funziona, ora cercavo di capire quello che proponeva skynet
    Devi capire perché non funziona non seguire un'altra strada ...
  • Re: Approccio esercizio

    #ifndef OGGETTO_H_
    #define OGGETTO_H_
    #include <string>
    #include <iostream>
    using namespace std;
    
    
    
    class oggetto {
    public:
    	oggetto();
    private:
    	int id;
    	string nome;
    };
    
    struct{
    oggetto obj;
    int identificatore;
    }record;
    
    record inventario[100];
    
    
    #endif /* OGGETTO_H_ */
    mi da quest'errore: ..\src\/oggetto.h:27:2: warning: non-local variable '<anonymous struct> record' uses anonymous type
    ..\src\/oggetto.h:29:1: error: 'record' does not name a type

    #ifndef OGGETTO_H_
    #define OGGETTO_H_
    #include <string>
    #include <iostream>
    using namespace std;
    
    
    
    class oggetto {
    public:
    	oggetto();
    private:
    	int id;
    	string nome;
    };
    
    typedef struct{  // ho inserito il tipedef 
    oggetto obj;
    int identificatore;
    }record;
    
    record inventario[100];
    
    
    #endif /* OGGETTO_H_ */
    ho quest'altro errore:
    C:\Users\gennaro\Desktop\exam\esempio\Debug/../src//oggetto.h:27: multiple definition of `inventario'
    src\oggetto.o:C:\Users\gennaro\Desktop\exam\esempio\Debug/../src//oggetto.h:27: first defined here
  • Re: Approccio esercizio

    Nella prima versione manca la typedef (che è necessaria).

    Per la seconda, già ti avevo chiesto prima, hai eliminato dal codice la tua vecchia typedef ?
  • Re: Approccio esercizio

    Si ok, in definitiva dovrebbe essere così:
    typedef struct{
    oggetto obj;
    int identificatore;
    }record;
    
    typedef record inventario[100];
    
    
    per accedere al campo identificatore dell'elemento in posizione 1 e inserirgli il numero 4 ho provato:
    	invantario[1].identificatore=4;
    
    però mi da : 'invantario' was not declared in this scope

    sbaglio il metodo di accesso?
  • Re: Approccio esercizio

    No .. sbagli vocale ...

    inventario ... invantario
  • Re: Approccio esercizio

    Che figura, in ogni caso dopo la correzione è cambiato l'errore:
    class oggetto {
    public:
    	oggetto();
    private:
    	int id;
    	string nome;
    };
    
    typedef struct{
    oggetto obj;
    int identificatore;
    }record;
    
    typedef record inventario[100];
    
    nel main:
    int main() {
    
    	int x=3;
    	oggetto obj1;
    
    inventario[1].identificatore=x;
    
    
    	return 0;
    }
    
    errore: error: expected unqualified-id before '[' token
  • Re: Approccio esercizio

    Beh, forse non sono stato chiaro fino ad ora ma scusami se te lo ripeto (magari l'ultima volta) ...

    Il typedef da

    typedef record inventario[100];

    lo devi togliere perché l'hai già usato prima .... Deve essere

    record inventario[100];
  • Re: Approccio esercizio

    Scusa ma non capisco, prima skynet mi ha chiesto : hai eliminato dal codice la tua vecchia typedef?

    e allora l'ho rimesso, in ogni caso se lo levo e quindi ho :
    typedef struct{
    oggetto obj;
    int identificatore;
    }record;
    
     record inventario[100];
    con questo errore:multiple definition of `inventario'

    effettivamente non riesco a capire, mi dispiace che vi stia facendo perdere tutto questo tempo, ma non riesco ad andare avanti
  • Re: Approccio esercizio

    Guarda ... solo un'ultima volta ... vuoi postare tutto il codice dalla prima linea all'ultima?
  • Re: Approccio esercizio

    Oggetto.h
    #ifndef OGGETTO_H_
    #define OGGETTO_H_
    #include <string>
    #include <iostream>
    using namespace std;
    
    
    
    class oggetto {
    public:
    	oggetto();
    private:
    	int id;
    	string nome;
    };
    
    typedef struct{
    oggetto obj;
    int identificatore;
    }record;
    
     record inventario[100];
    
    
    #endif /* OGGETTO_H_ */
    oggetto.cpp
    
    #include "oggetto.h"
    #include <string>
    #include <iostream>
    using namespace std;
    
    oggetto::oggetto(){
    	cout<<"Inserire ID: ";
    	cin>>id;
    	cout<<"\nInserire Nome: ";
    	cin>>nome;
    }
    

    main
    #include <iostream>
    #include "oggetto.h"
    using namespace std;
    
    int main() {
    
    	int x=3;
    	oggetto obj1;
    
    inventario[1].identificatore=x;
    
    
    	return 0;
    }
    
  • Re: Approccio esercizio

    Sposta la definizione dell'inventario nel main.
  • Re: Approccio esercizio

    skynet ha scritto:


    Sposta la definizione dell'inventario nel main.
    Per essere più chiari, sposta la linea

    record inventario[100];

    dal file oggetto.h a poco prima della linea

    int main()
Devi accedere o registrarti per scrivere nel forum
42 risposte