Minulla on ohjelmassani luokkia alla kuvailtuun tyyliin:
Class A { Private: vector<ClassB> vektori_b; }; ClassB { Private: vector<ClassC> vektori_c; vector<ClassD> vektori_d; }; ClassC { Private: string attribuutti1_; string attribuutti2_; }; ClassD { Private: string attribuutti3_; string attribuutti4_; };
Sisältö täytetään tähän tyyliin:
void ClassA::lisaaB(){ string nimi; //kysytään käyttäjältä nimi jne vektori_b.push_back(ClassB(nimi)); } void ClassB::lisaaC() { ClassC temp; temp.tietojenhankkimisrutiini(); vektori_c.push_back(temp); }
Vektori b pitää sisällään muutaman erinimisen alkion. Nämä alkiot taasen pitävät sisällään vektorit c ja d, joista kaksi jälkimmäistä pitävät sisällään erilaista string-tyyppistä dataa yms. Luokat eivät periydy toisistaan.
Kuinka saan vaihdettua vektori_b:n alkion (vaikkapa nollannes alkio) nimen siten ettei kaikki sen sisältö tuhoudu? Jos vain työnnän vektori_b:n taakse uutta sisältöä ja poistan vanhan vector.clear():lla niin kaikki sen sisältämä tieto tuhoutuu, luonnollisesti. Luodaan uusi väliaikainen vektori luokkaan ja sitten sijoitellaan sijoitusoperaattorin avulla? Pahoittelen jos kuvaukseni on epäselvä.
Olisiko esim. näistä vaihtoehdoista apua:
vektori_b[0].jokin_tieto = "jotain muuta"; vektori_b[0] = ClassB("jotain muuta");
Aihe on jo aika vanha, joten et voi enää vastata siihen.