Springen naar inhoud

[informatica] c++ - call by reference - class


  • Log in om te kunnen reageren

#1

yipenjanneke

    yipenjanneke


  • 0 - 25 berichten
  • 10 berichten
  • Gebruiker

Geplaatst op 10 december 2008 - 19:12

hallo, hoe kan ik een functie uit een class call by reference maken?

dit is zo ongeveer de situatie:

class woordenboek {
string woorden[20];
public:
void leesIn ();
void drukAf ();
void sorteer ();
void randommix ();
void verwijder ();
void voegtoe ();
};//woordenboek

woordenboek wb;

void woordenboek::leesIn () {
string hulp;
int i = 0;
ifstream invoer;
invoer.open ("woordenboek.txt");
while(invoer >> hulp){
woorden[i] = hulp;
i++;
}//while
}//leesIn

blablabla..

int main(){

woordenboek wb;

wb.leesin();

return 0;

}//main

de functie leesIn, sorteer, randommix, verwijder en voegtoe moeten call bij refference worden. alleen heb ik geen idee hoe ik dit voor elkaar krijg. is het zoiets als een bepaalde parameter met een & in de functie declaratie zetten. want ik heb al van alles geprobeert, maar kan niet vinden wat werkt.
ik hoop dat iemand een idee heeft voor een simpele oplossing, en wat moet ik in de functie aanroep, in de main, zetten?

alvast bedankt,

groeten, sander

Dit forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.

#2

TD

    TD


  • >5k berichten
  • 24078 berichten
  • VIP

Geplaatst op 10 december 2008 - 19:33

Welkom op het forum Huiswerk en Practica.

Jij wilt vlot hulp. Dat is alleen goed mogelijk als je daar zelf wat voor doet.

Naast de algemene regels van dit forum hebben we voor dit huiswerkforum een paar speciale regels en tips.
Die vind je in de huiswerkbijsluiter

In die huiswerkbijsluiter staat bijvoorbeeld:

VAKGEBIED-TAGS
Plaats het vakgebied waarop je vraag betrekking heeft tussen rechte haken in de titel.
bijv: [biologie] of [frans]. Zo blijft dit huiswerkforum overzichtelijk.

Hebben we even voor je gedaan. Denk je er de volgende keer zelf aan?
"Malgré moi, l'infini me tourmente." (Alfred de Musset)

#3

yipenjanneke

    yipenjanneke


  • 0 - 25 berichten
  • 10 berichten
  • Gebruiker

Geplaatst op 10 december 2008 - 23:47

mijn excuses, ik ben al vele malen zeer goed geholpen op dit forum en hoop er nog vaak gebruik van te kunnen maken. ik zal in het vervolg beter opletten.

misschien is het ook handing om een beetje de grote lijn te kennen van wat de functie waar ik het eerder over had. de opdracht is als volgd; ik moet een .txt file van 20 woorden in een array inlezen. en dan met dat array een aantal aantal bewerkingen doen zoal sorteren op alfabetische volgorde, etc.

#4

EvilBro

    EvilBro


  • >5k berichten
  • 6721 berichten
  • VIP

Geplaatst op 11 december 2008 - 08:43

hallo, hoe kan ik een functie uit een class call by reference maken?

Ik heb het idee dat je de vraag lastig vindt, omdat je niet weet wat een 'call by reference' is. Vandaar nu de vraag: kun je me vertellen wat jij denkt dat een call by reference is?

#5

yipenjanneke

    yipenjanneke


  • 0 - 25 berichten
  • 10 berichten
  • Gebruiker

Geplaatst op 11 december 2008 - 10:11

call by reference is dat de functie een parameter wèl veranderd. call bij value is dat de parameter alleen binnen de functie veranderd, maar na de functie weer zijn originele waarde terug krijgd.
ik ben alleen maar begonnen over call bij reference om het beestje maar een naam te geven. waar het eigenlijk om draait is dat bijvoorbeeld na de functie leesIn de waarde van het "string woorden[20]" veranderd moet zijn door het hele programma. zo ook voor sorteer, voegtoe, etc.

dus waar ik vooral benieuwd naar ben; is het zo simpel als iets tussen de haakjes gooien in de functie declaratie en aanroep( bijvoorbeeld: void woordenboek::leesIn (string & woorden o.i.d.){), en zo ja wat. of word het toch wat meer werk.

alvast bedankt,

groeten, sander

#6

Rogier

    Rogier


  • >5k berichten
  • 5679 berichten
  • VIP

Geplaatst op 11 december 2008 - 13:01

Gewoon een & voor een parameter zetten, dan wordt dat een reference. Voorbeeld:
void FunctieA( int x )
{
  x = 6;
}

void FunctieB( int &x )
{
  x = 7;
}

void main()
{
  int t = 4;
  
  FunctieA(t);
  // t is nu nog steeds 4
  
  FunctieB(t);
  // t is nu 7 !
  
  FunctieA(3); // dit doet niks
  
  FunctieB(3); // dit kan niet (geeft een compiler error), want call by reference heeft een variabele nodig  
}
In theory, there's no difference between theory and practice. In practice, there is.





0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures