Aiuto classi e array di oggetti

di il
4 risposte

Aiuto classi e array di oggetti

Salve raga,ho un problema con un array di oggetti...vi mando il codice:

#include <iostream>
#include <string.h>
using namespace std;


class Ragazzo {
int eta,altezza;
string nome;
public:
Ragazzo(){
eta=0;
altezza=0;
nome="";
};
Ragazzo(int age,int tall,int name){
eta=age;
altezza=tall;
nome=name;
}
void insert();
void setage(int age){eta=age;}
void settall(int tall){altezza=tall;}
void setname(string name){nome=name;}
int getage(){return eta;}
int gettall(){return altezza;}
string getname(){return nome;}
void visual();
};





void Ragazzo::insert(){
int age,tall;
string name;
cout<<"inserire eta'' ragazzo:"<<endl;
cin>>age;
setage(age);
cout<<"inserire altezza ragazzo:"<<endl;
cin>>tall;
settall(tall);
cout<<"inserire nome:"<<endl;
cin>>name;
setname(name);
}


void Ragazzo::visual(){
cout<<"nome"<<endl<<getname()<<endl;
cout<<"eta'"<<endl<<getage()<<endl;
cout<<"altezza"<<endl<<gettall()<<endl;
}

void Insert(){
int n;
Ragazzo lista[n];
cout<<"inserire numero ragazzi:"<<endl;
cin>>n;
for (int i=0;i<n;i++){

lista.insert();
}
for (int i=0;i<n;i++){
lista.visual();
}
}


int main(){
Insert();
return 0;
}


quando inserisco tutti i dati del primo ragazzo,il programma non passa al secondo ragazzo ma va in crash.
Se invece di utilizzare n come dimensione dell'array utilizzo un valore statico,il programma funziona normalmente...ho visto che degli amici lo hanno fatto con i puntatori e l'operatore new...mi sapreste dare qualche consiglio o spiegazione in merito?

4 Risposte

  • Re: Aiuto classi e array di oggetti

    Questa linea

    Ragazzo lista[n];

    ha un senso se la esegui DOPO che hai inserito il valore di n ...

    Se la esegui PRIMA, che valore ha n in quel momento?
  • Re: Aiuto classi e array di oggetti

    Perfettamente ragione...grazie mille!
    cercavo un modo di semplificare l'esercizio,visto che degli amici hanno addirittura creato una classe di listaRagazzo con puntatori a classe e creato un array con l'operatore new...che sarà anche corretto,ma superfluo per come devo fare io l'esame...così ho trovato il modo di creare una lista di oggetti senza allocare dinamicamente tramite puntatori
  • Re: Aiuto classi e array di oggetti

    Se invece volessi passare un array a funzione...così mi esce errore...qual'è la sintassi corretta?

    #include <iostream>
    #include <string.h>
    using namespace std;


    class Ragazzo {
    int eta,altezza;
    string nome;
    public:
    Ragazzo(){
    eta=0;
    altezza=0;
    nome="";
    };
    Ragazzo(int age,int tall,int name){
    eta=age;
    altezza=tall;
    nome=name;
    }
    void insert();
    void setage(int age){eta=age;}
    void settall(int tall){altezza=tall;}
    void setname(string name){nome=name;}
    int getage(){return eta;}
    int gettall(){return altezza;}
    string getname(){return nome;}
    void visual();
    };





    void Ragazzo::insert(){
    int age,tall;
    string name;
    cout<<"inserire eta'' ragazzo:"<<endl;
    cin>>age;
    setage(age);
    cout<<"inserire altezza ragazzo:"<<endl;
    cin>>tall;
    settall(tall);
    cout<<"inserire nome:"<<endl;
    cin>>name;
    setname(name);
    }


    void Ragazzo::visual(){
    cout<<"nome"<<endl<<getname()<<endl;
    cout<<"eta'"<<endl<<getage()<<endl;
    cout<<"altezza"<<endl<<gettall()<<endl;
    }

    void Insert(int n,Ragazzo lista[]){
    for (int i=0;i<n;i++){

    lista.insert();
    }
    }




    int main(){
    int n;
    Ragazzo lista[n];
    cout<<"inserire numero ragazzi:"<<endl;
    cin>>n;
    Insert(n,Ragazzo lista[n]);
    return 0;
    }
  • Re: Aiuto classi e array di oggetti

    Risolto...dovrebbe andare così

    #include <iostream>
    #include <string.h>
    using namespace std;


    class Ragazzo {
    int eta,altezza;
    string nome;
    public:
    Ragazzo(){
    eta=0;
    altezza=0;
    nome="";
    };
    Ragazzo(int age,int tall,int name){
    eta=age;
    altezza=tall;
    nome=name;
    }
    void insert();
    void setage(int age){eta=age;}
    void settall(int tall){altezza=tall;}
    void setname(string name){nome=name;}
    int getage(){return eta;}
    int gettall(){return altezza;}
    string getname(){return nome;}
    void visual();
    };





    void Ragazzo::insert(){
    int age,tall;
    string name;
    cout<<"inserire eta'' ragazzo:"<<endl;
    cin>>age;
    setage(age);
    cout<<"inserire altezza ragazzo:"<<endl;
    cin>>tall;
    settall(tall);
    cout<<"inserire nome:"<<endl;
    cin>>name;
    setname(name);
    }


    void Ragazzo::visual(){
    cout<<"nome"<<endl<<getname()<<endl;
    cout<<"eta'"<<endl<<getage()<<endl;
    cout<<"altezza"<<endl<<gettall()<<endl;
    }

    void Insert(int n,Ragazzo lista[]){
    for (int i=0;i<n;i++){

    lista.insert();
    }
    }




    int main(){
    int n;
    cout<<"inserire numero ragazzi:"<<endl;
    cin>>n;
    Ragazzo lista[n];
    Insert(n,lista);
    return 0;
    }
Devi accedere o registrarti per scrivere nel forum
4 risposte