Pientä päänvaivaa on aiheuttanut seuraanvanlainen ongelma. Luokassa 1 on muuttujana vektori joka sisältää luokan 2 objekteja. Kun luokasta 3 käsin käytetään tätä vektoria tulee ongelmia. Esim
function testi(Luokka1 & luokka1)
{
vector vektori = luokka1.haeVektori();
for(int i=0; i < vektori.Size(); i )
{
Luokka2 temp = vektori.at(i);
//halutaan muuttaa vektorissa olevan //objektin sisältöä
temp.muutaSisaltoa(1, 2);
}
}
Ongelmaksi muodostuu se, että muutoksen jälkeen temp muuttujan arvot näyttäis muuttuvan mutta oikeasti muutosta ei tapahdu, vaan luokan 1 vektorin sisältämät objektit säilyvät ennallaan kun funktiosta on poistuttu. Parametrina tuleva luokka1 muuttuja on viiteparametri, mutta sekään ei auta säilömään muutoksia. Myöskään haevektori() funktioon lisätty viiteparametri ei auttanut.
function testi(Luokka1 & luokka1)
{
vector vektori = luokka1.haeVektori();
for(int i=0; i < vektori.Size(); i )
{
Luokka2 temp = vektori.at(i);
//halutaan muuttaa vektorissa olevan //objektin sisältöä
temp.muutaSisaltoa(1, 2);
}
}
Ongelmaksi muodostuu se, että muutoksen jälkeen temp muuttujan arvot näyttäis muuttuvan mutta oikeasti muutosta ei tapahdu, vaan luokan 1 vektorin sisältämät objektit säilyvät ennallaan kun funktiosta on poistuttu. Parametrina tuleva luokka1 muuttuja on viiteparametri, mutta sekään ei auta säilömään muutoksia. Myöskään haevektori() funktioon lisätty viiteparametri ei auttanut.
Vastaukset 1
Vanhimmat
vector vektori = luokka1.haeVektori();
Tutki tarkkaan mitä tuo rivi tekee, ja mitä sen pitäisi tehdä.