Namespace

namespace oznacza przestrzeń nazw, w której mogą być zadeklarowane funkcje, struktury itd. Najlepiej zilustruje to przykład.

//...
namespace nazwa
{
  void funkcja_1()
  {
    //...
  }
}
//...
 


Aby odwołać się do składnika z danej przestrzeni nazw musimy użyć przed jego nazwą, nazwę przestrzeni, przykładowo (na podstawie powyższego):

//...

nazwa::funkcja_1();


Gdy często używamy jakichś funkcji, zmiennych z danej przestrzeni nazw możemy zrobić tak:

//....
namespace nazwa
{
  //...
}

using namespace nazwa; /* ta funkcja sprawia, że od tej pory nie musimy dopisywać do każdego elementu z przestrzeni nazwy przestrzeni oraz modyfikatora :: */
funkcja_1();
//...
 


Załóżmy, że mamy dwie identyczne (bądź podobne :-) ) przestrzenie nazw:

namespace First {
   void f() {}
   void g() {}       
}

namespace Second {
   void f() {}
   void g() {}         
}


Chcemy, aby pisząc instrukcję f() została wywołana funkcja z pierwszej przestrzeni nazw, a pisząc g() funkcja z drugiej przestrzeni. Należy w takim przypadku użyć deklaracji using, mianowicie:

// ...
  using First::f;    // brak słowa kluczowego namespace!
  using Second::g;
  f();    // First::f()
  g();   // Second::g()
// ...
 


Po takich deklaracjach aby móc wywołać funkcję g() z przestrzeni nazw First, należy już to zrobić jawnie:

// ...
  First::g();
// ...
 
Informacje
Ostatnia modyfikacja 16-05-2006 20:04 Ostatni autor osamar
Ilość wyświetleń 8493 Wersja 7
Komentarz
Duninho dnia 09-11-2008 16:27
Trochę krótkie i raczej kiepsko wyjaśnia, PO CO w ogóle to robić.
zoteek dnia 21-04-2006 17:04
Tak na marginesie: po utworzeniu przestrzeni nazw nie jest potrzebny średnik :-)
pro3dor dnia 18-04-2006 12:17
eee... fajne :D

nie znałem tego

Copyright © 2000-2006 by Coyote Group 0.9.3-pre3
Czas generowania strony: 0.0340 sek. (zapytań SQL: 9)