Datum opslaan in variabele of konstante?

Status
Niet open voor verdere reacties.

Corwin

Gebruiker
Lid geworden
10 dec 2005
Berichten
21
Ik heb het volgende diverse malen nodig in mijn programma:

(Date() + i - 6 - DagShift)

Dagshift is een konstante (afh van de huidige dag) en i is een integer (nodig voor loop)

kan ik dit in een variabele (of constante?) opslaan (zonder i natuurlijk), het is wel nodig om hieruit een datum te halen !

groetjes Corwin.
 
Ik heb het volgende diverse malen nodig in mijn programma:

(Date() + i - 6 - DagShift)

Dagshift is een konstante (afh van de huidige dag) en i is een integer (nodig voor loop)

kan ik dit in een variabele (of constante?) opslaan (zonder i natuurlijk), het is wel nodig om hieruit een datum te halen !

groetjes Corwin.

je bedoelt dat bijvoorbeeld
DATE typed en dat de compiler het ziet alsof je (Date() + i - 6 - DagShift) hebt ingegeven?

Als het dit is dan gaat het op 2 manieren:
A. de cpp manier:
Schrijf gewoon een functie die het doet? en maak deze natuurlijk wel inline. Dan
zal de compiler gewoon een tekstsubstitutie doen.
Inline declareren kan op verschillende manieren:
1) je schrijft alles in je .h file zoiets dus:
PHP:
<return> functie( <param> ) {
    // invullen wat de functie doet
}
2) je schrijft voor de functie het keyword inline ( in de .h of in de .cpp file, niet in beide. Het heeft trouwens niet helemaal dezelfde betekenis in de .h file en in de .cpp file. De rechten van de functie zijn iets anders

B. de c way: ( macro )
PHP:
#define DATE( i ) ( Date() ) + ( i ) - 6 - ( DagShift )
en dan kan je DATE( <variabele> ) gewoon overal schrijven. Als de teller van de for lus altijd een i zou zijn kan je zelf gewoon DATE schrijven. de de i zal dan gewoon uit de for-lus worden gehaald.

Nadelen van de macro zijn dat er geen controle is over de invoer van de parameters. Daarom dat er rond elke variabele ( ) staan. Anders wil er nog al eens iets fout gaan..
 
Wat ben ik een *****, je kunt er natuurlijk een functie van maken :o:o
Ik heb alleen maar zitten denken om het zaakje in een variabele te stoppen, maar wist niet welk type.
Dit probleem blijft dus eigenlijk bestaan, daar ik het functietype moet declareren?
Ik kan er bv geen Int van maken daar dit niet meer als een datum herkent wordt.

Mij is alleen niet duidelijk waarom je die (of 'n) functie nu in een .h of in .cpp stopt?
 
Laatst bewerkt:
Wat ben ik een *****, je kunt er natuurlijk een functie van maken :o:o
Ik heb alleen maar zitten denken om het zaakje in een variabele te stoppen, maar wist niet welk type.
Dit probleem blijft dus eigenlijk bestaan, daar ik het functietype moet declareren?
Ik kan er bv geen Int van maken daar dit niet meer als een datum herkent wordt.

Mij is alleen niet duidelijk waarom je die (of 'n) functie nu in een .h of in .cpp stopt?

Als je niet weet welk type je de parameters of de return waarde van de functie het best zou kunnen geven. ( omdat er misschien onder verschillende omstandigheden een ander type kan meegegeven worden). Dan kan je er gewoon een template functie van maken. Dan kan je in principe eender welk type meegeven( ook zelf gedefinieerde klassen). Zolang als de operaties die je op het type wilt verrichten maar gedefineerd zijn.

Ben je bekend met het inline stellen van functies? Je kan dit om 2 manieren doen.
Ofwel impliciet in de header file of wel expliciet door het key-word inline.
Nu het keyword inline zet je ofwel in de header file bij de declaratie van de functie ofwel in de cpp file bij de definitie van de functie ( niet bij bijde!).

Zet je het inline keyword in de header file dan zal er normaal nooit echt een probleem optreden (hoewel ik nog altijd opteer voor impliciete inline functie's vnl omdat ik al vaker problemen gehad heb met keyword inline en de freebsd g++ compiler).

Zet je het keyword inline echter in de cpp file dan zal deze functie enkel zichtbaar zijn in de klasse waar hij gedefinieerd is. Dit komt omdat het keyword inline door compiler op nogal speciale manier wordt behandeld tijdens het "linken".
 
Volgens mij heb ik eens gelezen dat je geen functie vanuit een functie kunt oproepen.
Klopt dit?
Indien ja, kun je dan een inline functie wél aanroepen vanuit een andere functie?
 
Volgens mij heb ik eens gelezen dat je geen functie vanuit een functie kunt oproepen.
Klopt dit?
Indien ja, kun je dan een inline functie wél aanroepen vanuit een andere functie?

bedoel je dit?
PHP:
void aFunction( ) {
   anOtherFunction( );
}

want dit mag hoor. De enigste functie, die ik me zo direct kan inbeelden, die je niet zomaar kan aanroepen is de constructor van een klasse. Voor de rest kan je elke andere functie aanroepen vanuit iedere andere functie.

Wat je misschien hebt gelezen zal waarschijnlijk te maken hebben met de zichtbaarheid van de functies.

- een functie die onder private staat is enkel zichtbaar in dezelfde klasse en kan dus niet in een functie aangeroepen worden van andere klassen.
- een functie die onder protected staat is enkel zichtbaar in dezelfde klasse en de afgeleide klasse
- een functie die public staat is in principe overal zichtbaar ( behalve als je met overerving gaat werken en private ( of protected ) laat overerven
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan