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.