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