Ciao a tutti mi presento sono Paolo e vi scrivo per chiedervi un aiuto. Non riesco a capire cosa non va nel codice che vi allego. In particolare, voglio semplicemente dichiarare un oggetto derivato in una funzione esterna (non membro) e passarlo al main. Come fare?![]()
Grazie in anticipo
Paolo
#include<iostream.h>
#include<string.h>
#include<stdio.h>
class animal
{
protected:
int zampe;
char *alim;
public:
animal();
animal(const animal &ogg){
alim = new char[10];
strcpy(alim,ogg.alim);
zampe = ogg.zampe;
cout <<"Costruzione di COPIA animal"<<endl;
}
~animal(); //Distruttore
void set_zampe(int z){ zampe = z; return;}
void set_alim(char *s){
strcpy(alim,s); return;}
int get_zampe(){ return zampe;}
char* get_alim(){ return alim; }
};
animal::animal()
{
alim = new char[10];
if(!alim) cout<<"Errore nella allocazione"<<endl;
else cout <<"Costruzione di animal"<<endl;
}
animal::~animal()
{
cout<<endl<<"Distruzione di animal"<<endl;
delete alim;
}
class scimmie: public animal
{
char *razza;
public:
scimmie(){ razza = new char [10]; cout<<"costruttore di scimmia"<<endl;}
scimmie(const scimmie &ogg);
~scimmie(){ delete razza; cout<<"distruttore di scimmia"<<endl;}
void set_razza(char *r){ strcpy(razza,r); return;}
char *get_razza(){ return razza;}
};
scimmie::scimmie(const scimmie &ogg): animal(ogg) {
razza = new char [10];
strcpy(razza,ogg.razza);
cout <<"Costruzione di COPIA scimmie"<<endl;
}
scimmie visu()
{
scimmie U;
char *cibo, *razza;
int zampe;
cibo = new char [10];
razza = new char [10];
cout<<"Inserire il n.ro di zampe:"<<endl;
cin>>zampe;
cout<<"Inserire l'alimentazione:"<<endl;
gets(cibo);
cout<<"Inserire la razza:"<<endl;
gets(razza);
//Inizializzazione
U.set_zampe(zampe);
U.set_alim(cibo);
U.set_razza(razza);
cout<<endl;
return U;
}
main()
{
scimmie T; //ATTENZIONE: SE METTO scimmie T = visu(); FUNZIONA! PERCHE' COSI' NO? THANKS!
T = visu();
cout<<"Il n.ro di zampe è: "<<T.get_zampe()<<endl;
cout<<"Il cibo e: "<<endl;
puts(T.get_alim());
cout<<"La razza è: "<<endl;
puts(T.get_razza());
return 1;
}