previous next Up Title Contents Index

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ö.

Tehtävä 19.165 Ystävyys pois

Toteuta jäsenen operator<< siten, ettei ystäväfunktiota tarvita.


previous next Up Title Contents Index