verander de objecten binnen functies

Ik heb een functie die twee parameters heeft, beide objecten. Ik verander deze objecten binnen de functie en ik moet de wijzigingen achteraf zien. Maar verwijzingen werken niet. Enig idee?

void foo(apple &a,apple &b)
{
  //change a and b
}
main()
{
  apple a,b;
  foo(a,b);
  //a and b are the same as befor calling foo  `  
}

bedankt.

1
En verwijzingen moeten ook werken
toegevoegd de auteur Adrian Cornish, de bron
Plaats een aantal werkelijke compileerbare code die het probleem laat zien. Het principe van passerende verwijzingen naar objecten moet correct zijn.
toegevoegd de auteur Oliver Charlesworth, de bron
Hoe "verander" je deze objecten in de methode?
toegevoegd de auteur madth3, de bron

1 antwoord

Do you mean changing the methods of the classes you're passing? You'll need to use '->' if that's what you mean.

class apple {
    public:
        int weight; 
}

void foo(apple *a,apple *b) {
    a->weight = b->weight;
}

main() {
    apple a,b;
    foo(&a,&b);
}
1
toegevoegd
dank u zeer. Het werkte.
toegevoegd de auteur Pegah, de bron