/* namespac.cpp */ // Esimerkki nimiavaruuksien (namespace) käytöstä /vl-96 // Vaikka esimerkissä on paljon muuttujia, niin yleensä suurin hyöty // saadaan nimiavaruukisen käytöstä tyyppien kanssa. #include namespace nsOmat { // Nimiavaruuden esittely typedef char tTyyppi; // Yleensä nimenomaan tyypit aiheuttaa päällekkäis. int a = 5; int b = 6; int c = 7; namespace nsErikoiset { // Sisäkkäisetkin nimiarvaruudet on sallittu double d = 8.5; } } namespace nsVieraat { typedef double tTyyppi; char a = 'a'; char b = 'b'; char c = 'c'; } namespace nsKamalanPitkaNimiAvaruudenNimi { double a = 9.2; namespace nsJaViela { double f = 10.3; } } namespace nsOmat { // Nimiavaruuteen voi lisätä määrityksiä double e = 9.6; } namespace nsKPNAN = nsKamalanPitkaNimiAvaruudenNimi; // Namespace alias namespace nsJV = nsKPNAN::nsJaViela; // Namespace alias int main(void) { double c = 70; // Lokaali nimi voittaa aina using namespace nsOmat; using namespace nsErikoiset; cout << "d = " << d << endl; // 8.5 nsOmat::nsErikoiset::d tTyyppi d = 'x'; // nsOmat::tTyyppi cout << "a = " << a << endl; // 5 nsOmat::a cout << "b = " << b << endl; // 6 nsOmat::b cout << "c = " << c << endl; // 70 lokaali c cout << "d = " << d << endl; // x lokaali d cout << "e = " << e << endl; // 9.6 nsOmat::e cout << "b = " << nsVieraat::b << endl; // b nsVieraat::b { // Uusi vaikutusalue using nsVieraat::a; // nyt b on aina nsVieraat::b cout << "a = " << a << endl; // a nsVieraat::a } // em. vaikutusalue loppu cout << "a = " << a << endl; // 5 nsOmat::a using nsKPNAN::a; cout << "a = " << a << endl; // 9.2 nsKamalan..Nimi::a using namespace nsJV; cout << "f = " << f << endl; // 10.3 nsKam..Nimi::nsJaViela::f using nsVieraat::tTyyppi; tTyyppi f = 1.75; // nsVieraat::tTyyppi cout << "f = " << f << endl; // 1.75 lokaali f return 0; }