ciao a tutti,
ho una classe lista e al suo interno ho definito anche il costruttore di copia e la ridefinizione dell'operatore assegnazione (=) in modo che facendo nel main C c1=c; si ottenga in c1 una copia dell'oggetto c. Ebbene, riesco ad ottenere una copia dell'oggetto c ma gli elementi della copia sono ordinati al contrario!
Ecco la classe:
e l'implementazione della classe:codice:typedef int E; struct Record{ E elem; Record* punt; }; typedef Record* L; class lista{ private: L l; void inserisciric(L& l, E e); void eliminaric(L& l, E e); void elimina_testa(L& l); public: lista(){ l=0;} lista(const lista &); lista& operator=(const lista & ); ~lista(); void copialista(const lista &); void push(E e); void pop(E e); void inserisci(E e){ inserisciric(l,e);} void elimina(E e){ inserisciric(l,e);} bool empty(){ return (l==0);} void top(E e); void print()const; };
dove sbaglio???codice://costruttore di copia lista::lista(const lista& lista) { copialista(lista); } //ridefinizione operatore di assegnazione lista& lista::operator = (const lista& lista) { copialista(lista); } lista::~lista(){ L q,p; for (p=l; p!=0; p=q){ q=p->punt; delete p; } } //funzione copia elemento per elemento, richiamata nel costruttore di copia void lista::copialista(const lista & lista){ L q = lista.l; l = 0; while(q) { push(q->elem); q = q->punt; } } void lista::push(E e){ L q=new Record; q->elem=e; q->punt=l; l=q; } void lista::print() const { L q = l; while (q!=0){ cout << "Elemento: " << q->elem << " "; q = q->punt; } }
ciao!

Rispondi quotando