16.1.2012 dvije godine postojanja naših stranica

namespace


Ako korisnik istodobno u svom programu rabi više biblioteka može se dogoditi da su u njima pohranjene funkcije istog imena koje rade različite stvari.Da bi se izbjegla zabuna koja nastaje pozivom takvih funkcija, mogu se sve funkcije pojedine biblioteke označiti dodatnim imenom naredbom namespace. Zadatak takvog označavanja je jednoznačno određivanje funkcija tj. mogućnost razlikovanja funkcija istog imena koje se nalaze u različitim bibliotekama.

 

Opći oblik naredbe namespace

namespace dodatno_ime

 

 Pri pozivanju funkcije označene dodatnim imenom uz željeno ime funkcije treba navesti i dodatno ime kojim je ta funkcija označena. Postoje dva načina kako to učiniti. Može se koristiti operator dodjele područja (dvije dvotočke, ::) ili naredba using.

 

Opći oblik naredbe using

using namespace dodatno_ime

 

 


Poziv funkcija označenih dodatnim imenom

 

Korištenjem operatora dodjele područja se pri pozivu svake od funkcija uz njeno ime treba navesti i dodatno ime. Korištenjem naredbe using namespace dodatno_ime se funkcije označene dodatnim imenom pozivaju bez dodatnog imena.

 

Pozivanje funkcija označenih dodatnim imenom

biblioteka1

biblioteka2

korisnički program

namespace prva

funkcija alfa

funkcija beta

funkcija eta

namespace druga

funkcija gama

funkcija delta

funkcija alfa

#include <biblioteka1>

#include <biblioteka2>

using namespace prva;

......

naredba

alfa

naredba

beta

druga::delta

naredba

......

 

U ovom primjeru se i u biblioteci biblioteka1 i u biblioteci biblioteka2 nalazi funkcija naziva alfa. Te dvije biblioteke potječu od različitih izvora pa funkcije alfa imaju potpuno različito djelovanje. Programer u svom programu želi rabiti funkcije iz obje biblioteke što je naveo naredbama #include. Kad programer u svom programu želi pozvati funkciju alfa mora nekako reći koju od dvije funkcije alfa želi. To može učiniti na dva načina:

  • Prvi je da na početku programa navede naredbu using namespace dodatno_ime funkcija odgovarajuće biblioteke. U primjeru će se zbog naredbe using namespace prva uvijek pri pozivu funkcije alfa rabiti funkcija označena dodatnim imenom prva.
  • Druga je mogućnost da se pri pozivu funkcije u programu navede dodatno ime ispred imena funkcije (međusobno odvojeni dvostrukom dvotočkom). U ovom primjeru pozivom druga::delta rabit će se funkcija delta iz biblioteke biblioteka2.

 

 

Podstranice (1): std