19.1.4 Jäsenen tehtävät talletuksessa
Jäsenellekin on jäänyt tehtäviä. Jäsenen
tulostus tietovirtaan voitaisiin tehdä esimerkiksi:
ostream &operator<<(ostream &os,const cJasen &jasen)
{
char erotin = jasen.erotin;
os << jasen.tunnus_nro << erotin
<< jasen.nimi << erotin
<< jasen.hetu << erotin
<< jasen.katuosoite << erotin
...
<< jasen.jmaksu << erotin
<< jasen.maksu << erotin
<< jasen.lisatietoja << erotin;
}
Nyt maksut tulostuisivat desimaaleiltaan varsin mielivaltaisesti. Jos
tämä tyydyttää, niin em. tapa on aivan hyvä.
Toisaalta voitaisiin tehdä apufunktio jonoksi, jonka
tehtävänä on muotoilla reaaliluku merkkijonoksi siististi,
esimerkiksi kahdella desimaalilla:
string jonoksi(double d)
{
char st[40];
double_jonoksi(N_S(st),d,"%4.2lf");
return string(st);
}
Nyt reaalilukukenttien tulostus voitaisiin tehdä
...
<< jonoksi(jasen.jmaksu) << erotin
<< jonoksi(jasen.maksu) << erotin
...
Symmetriasyistä kaikille muillekin tietotyypeille voitaisiin tehdä
vastaava funktio C++:an kuormitusmahdollisuuden ansiosta. Näin
jäsenen tietovirtaan tulostaminen voisi olla myös:
talletus.2\jasen.cpp - talletus
ostream &operator<<(ostream &os,const cJasen &jasen)
{
char erotin = jasen.erotin;
os << jonoksi(jasen.tunnus_nro) << erotin
<< jonoksi(jasen.nimi) << erotin
<< jonoksi(jasen.hetu) << erotin
<< jonoksi(jasen.katuosoite) << erotin
<< jonoksi(jasen.postinumero) << erotin
<< jonoksi(jasen.postiosoite) << erotin
<< jonoksi(jasen.kotipuhelin) << erotin
<< jonoksi(jasen.tyopuhelin) << erotin
<< jonoksi(jasen.autopuhelin) << erotin
<< jonoksi(jasen.liittymisvuosi) << erotin
<< jonoksi(jasen.jmaksu) << erotin
<< jonoksi(jasen.maksu) << erotin
<< jonoksi(jasen.lisatietoja) << erotin;
return os;
}
Tästä on vielä se lisäetu, että voidaan esimerkiksi
tehdä jonoksi- funktiosta sellainen, että tietty
kokonaislukuarvo tai reaalilukuarvo (esim. -1) tallettuu tyhjänä
merkkijonona, tarkoittaen ettei arvoa ole syötetty. 0:han ei yleensä
voi tällainen arvo olla, koska 0 on usein aivan järkevä
syöttö.
- Toteuta jäsenen operator<< siten, ettei
ystäväfunktiota tarvita.