Ciao a tutti, sto iniziando ad avvicinarmi per motivi di studi al C++...sono ancora alle prime armi anche se ho una buona base di C ma sono ancora carente sulle peculiarità del C++ per esempio l'implementazione di un costruttore di copia...per farla breve io ho una classe Elenco dove ho istanziato un vector di Persona (una classe che identifica una persona)
codice:
private: std::vector<Persona> elenco;
adesso nel main ad un certo punto faccio queste operazioni:
nota: il metodo add() non fa altro che inserire una nuova Persona nel vector
codice:
Elenco e1;
e1.add(Persona("a","b"));
e1.add(Persona("c","d"));
e1.add(Persona("e","f"));
Elenco e2=e1;
in questo caso senza un costruttore di copia, in e2 va a finire l'indirizzo di e1, quindi se provo a fare:
metodo remove(index) che rimuove l'elemento alla posizione index, l'elementi risulta rimosso anche da e1! questo perchè suppongo e1 e e2 puntano allo stesso vector...mentre volendo fare un costruttore di copia, quando faccio
voglio costruire in e2 una vera e propria copia di e1....ho provato ad implementare tale costruttore ma non ne vengo a capo:
codice:
Elenco::Elenco(const Elenco& elem ) {
//...operazioni...
}
Il fatto è che non so come referenziare elem...perchè se scrivo:
con size() metodo che restituisce il numero di elementi nel vector; il problema è che quando scrivo elem. il compilatore (visual studio 2010) mi da le varie opzioni di auto-completamento ma mi dice poi che è errato:
codice:
Errore 1 error C2662: 'Elenco::size': impossibile convertire il puntatore 'this' da 'const Elenco' a 'Elenco &'
grazie per eventuali aiuti
spero di essere stato chiaro
magari non sarà difficile ma sono ancora alle prime armi