NAVIGATIE

Freetime overzicht
Zoeken


  RUBRIEKEN

FAQ / Help
Wat mag niet?
WZL Wedstrijden
WZL Chat
WZL Toolbar
WZL Statistieken
WZL leden
WZL shop
E-cards

RSS

Fun-feed
Babe-feed
Stud-feed

Een groot aantal pokerrooms geven de mogelijkheid om poker te spelen op internet en geld te storten via het veilige iDeal betaalsysteem.
Overzicht » Computer » Programmeren » C++ en classes... wie kan helpen?
Onderaan pagina
Bondt met dt
[mod] 007 ½
Sinds 2/5/2003
T: 19 R: 715
26/11/2007 - 10:55u | Quote
Kben aant proberen te programmeren in c++ maar nu stuit ik op een probleem!

Ik heb de volgende opbouw: in de main loop ik steeds een switch af met cases, dit gaat oneindig door. Na de cases wordt er steeds iets gecontroleerd met een functie. Nu is het de bedoeling dat ik bij die controle iets kan ophalen uit mijn klasse zodat ik in de main uit mijn while kan springen! Het probleem is dat ik geen data kan doorgeven via die functies (volgens mijne compiler) omdat het om 'void functies' gaat.

----------
main.cpp
----------

...
while(1)
{

switch()
{
case 1
doe.functie1();
case 2
doe.functie2();
case 3
doe.functie3();
...
}

doe.check();

}




-------
klasse
-------

...

void functie1()
{
...
}

void functie2()
{
...
}

void functie3()
{
...
}

void check()
{
// hier moet ik iets terug sturen naar de main... maar hoe? Ik kan niet met "return variabele" beginnen omdat het een void functie is!
}
Wimpie 2.5
wzl-lid
Sinds 24/9/2004
T:39 - R:152
26/11/2007 - 11:35u | Quote
volgens mijn beperkte kennis van C++ kan een void functie idd geen return doen... Vervang de void dus door iets anders (als ik nog wist wat zou ik het zeggen ) Google is your best friend...

edit: als ik mij niet vergis moet het dan iets zijn als public string (dus niet void) functienaam...

Laatst aangepast door Wimpie op 26/11/2007 11:36:08u (1x aangepast)
D3ton8oR
Stella-man
Sinds 15/10/2003
T:32 - R:1581
26/11/2007 - 12:18u | Quote
idd, gewoon uw functie aanpassen..

Ipv "void check()" maak je er gewoon (veronderstellend dat je een string moet terugsturen.. werkt met alles eigenlijk: datatable, int, bool, ...) "private string check()" van of "private int check()"

zoiets dus:

Private bool Voorbeeld()
{
bool valid = true;

if (tekstvak.text == string.empty)
{
valid = false;
}

return valid;
}



(of public natuurlijk.. hangt er van af waar je ze nodig hebt)

en dan in je ontvangende zet je gewoon zoiets

...
bool tekstvakisleeg;

tekstvakisleeg = Voorbeeld();

...

Zubzub 2.604
wzl-lid
Sinds 30/7/2005
T:2 - R:176
26/11/2007 - 15:41u | Quote
Ik weet niet hoe het in C++ zit maar als je je functie private maakt kan niemand behalve de klasse zelf ze oproepe d3t behalve als het gaat om een innerklasse natuurlijk.

De oplossing is gewoon je void aan te passen. Het type voor je functienaame (in dit geval void = leegte) duid aan wat de functie returned. Niets dus. Je main weet dus niet of de "check()" succesvol was of niet want er komt geen feedback.

ipv daarvan kan je er bvb van maken

public boolean check()
{
//als de voorwaarde voldaan is
return true;
//als het niet in orde is
return false;
}

en je main wordt dan:
----------
main.cpp
----------

...
do
{

switch()
{
case 1
doe.functie1();
case 2
doe.functie2();
case 3
doe.functie3();
...
}

}while(!doe.check())

op het einde van de lus wordt de check functie gecontrolleerd en de gereturnde waarde wordt omgedraaid (true wordt false, false wordt true). Immers, als doe.check() niet zou worden omgedraaid zou de lus blijven lopen en vice versa. Wat wij wille bereiken is net het omgekeerde, vandaar de ! operator voor de boolean
waarde om te keren. (bij while(boolean){...} wordt de voorwaarde bij het aanvangen van de lus gecontrolleerd, bij do{...}while(boolean) wordt de voorwaarde op het einde van de lus gecontrolleerd.)

hf

Laatst aangepast door Zubzub op 26/11/2007 16:54:56u (4x aangepast)
Bondt met dt
[mod] 007 ½
Sinds 2/5/2003
T:19 - R:715
26/11/2007 - 16:34u | Quote
Aight! Dat helpt me alweer een stukje vooruit!

Thnx0r!
D3ton8oR
Stella-man
Sinds 15/10/2003
T:32 - R:1581
26/11/2007 - 19:34u | Quote
Zubzub schreef:
Ik weet niet hoe het in C++ zit maar als je je functie private maakt kan niemand behalve de klasse zelf ze oproepe d3t


ja da weet ik wist nie goe waar em ze nodig had, maar 't zal idd wsl een andere klasse zijn
Bondt met dt
[mod] 007 ½
Sinds 2/5/2003
T:19 - R:715
12/12/2007 - 20:08u | Quote
Terug aant cpp'en geslagen!

Ik heb een vreemd probleem nu...

Ik genereer een random getal voor persoon1 en persoon2. Toch bevaten persoon1 en persoon2 altijd hetzelfde getal...

De opbouw is als volgt:

MAIN.CPP

Doe persoon1;
Doe persoon2;

persoon1.genereer();
persoon2.genereer();

cout << persoon1.getGetal(); // geeft bijvoorbeeld 5
cout << persoon2.getGetal(); // geeft dan ook 5 uit, da mag dus niet!


CLASSES.H

class Doe {

public:
doe(void);
int getGetal();
void genereer();

}


CLASSES.CPP

int getal;

Doe :: Doe(void) // spaties na de :: anders komt er ne smiley hier
{

}

void Doe::genereer()
{
srand ( time(NULL) );
getal = rand() % 10 + 1;
cout << getal; // hier verschijnt wel 2x een ander getal bij het oproepen!
}

int Doe::getGetal()
{
return getal;
}
Fry 2.667
wzl-lid
Sinds 1/2/2006
T:2 - R:36
13/12/2007 - 21:33u | Quote
Even een vlugge uitleg die best wel eens fout zou kunnen zijn,

Random getallen genereren is niet makkelijk voor een computer en dus werken de meeste rand() functies met een algoritme die een pseudo-random reeks getallen genereert op basis van een algoritme. De getallen zijn op het eerste zicht volledig random maar zijn feitelijk gewoon bewerkingen op een zogenaamde "seed". Dus de random functie heeft een soort begingetal nodig (die "seed" en zal met eenzelfde begingetal steeds dezelfde reeks getallen na elkaar genereren.

Je zal dus ergens moeten aangeven met welk getal de rand() als feed moet gebruiken (neem voor de ene een getal gebaseerd op de systeemtijd en voor de andere de systeemtijd + 10 ofzo).

Ik zou ook fout kunnen zijn, maar C++ kennende zou dit wel eens juist kunnen zijn.

Laatst aangepast door Fry op 13/12/2007 21:34:22u (1x aangepast)
Bondt met dt
[mod] 007 ½
Sinds 2/5/2003
T:19 - R:715
17/12/2007 - 15:58u | Quote
Spijker op de kop!

Merci!!
 
Bovenaan pagina