Ciao ragazzi non riesco a capire perchè non mi funziona il costruttore di copia...posto il codice;
questo è l'header
codice:#ifndef _FIORE_ #define _FIORE_ #include <iostream> const int DIM=50; using namespace std; class Fiore{ private: char* nome; char colore[DIM]; int num_petali; public: Fiore(char*nm="",char*cl="" ,int nmp=0); Fiore(const Fiore & ); const char* get_nome() const {return nome;} void set_nome(const char* buffer) {delete [] nome;nome=new char[strlen(buffer)+1];strcpy(nome,buffer);} const char* get_colore()const {return colore;} void set_colore(const char* c) {strcpy(colore,c);} int get_num_petali() const {return num_petali;} void set_num_petali(int n) {num_petali=n;} ~Fiore() {cout << "\n distruttore chiamato!"; delete [] nome;} // friend Fiore operator+(const Fiore&,const Fiore& ); }; Fiore operator+(const Fiore&,const Fiore& ); #endif il .cpp #include "fiore2.h" Fiore::Fiore(char*n,char*c ,int np) { cout<<"\nCostruttore chiamato"; nome=new char[strlen(n)+1]; strcpy(nome,n); strcpy(colore,c); num_petali=np; } Fiore::Fiore(const Fiore & f){ cout<<"\ncostruttore di copia chiamato"; num_petali=f.num_petali; strcpy(colore,f.colore); nome=new char[strlen(f.nome)+1]; strcpy(nome,f.nome); } Fiore operator+(const Fiore& f1,const Fiore& f2){ Fiore Result; Result.set_nome(f1.get_nome()); Result.set_num_petali(f1.get_num_petali()+ f2.get_num_petali()); Result.set_colore(f1.get_colore()); return Result; } e il main #include <cstdlib> #include <iostream> #include "fiore2.h" using namespace std; int main(int argc, char *argv[]) { Fiore f1("viola","rossa",3),f2;//("geraneo","verde",4); f1.set_nome("rosa"); f2=f1; // Fiore C=f1+f2; // cout<<C.get_num_petali(); system("PAUSE"); return EXIT_SUCCESS; }

Rispondi quotando