Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Luokan sisältämän vektorin nimen vaihtaminen

SukaBljat [27.11.2018 16:00:35]

#

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ä.

Metabolix [27.11.2018 23:13:22]

#

Olisiko esim. näistä vaihtoehdoista apua:

vektori_b[0].jokin_tieto = "jotain muuta";
vektori_b[0] = ClassB("jotain muuta");

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta