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;
}