• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

czy tak powinno być?

Object Storage Arubacloud
0 głosów
210 wizyt
pytanie zadane 13 lipca 2015 w C i C++ przez Pan Kulomb Pasjonat (18,630 p.)
edycja 14 lipca 2015 przez Pan Kulomb
Witam, ostatnio pisałem własny namespace (GUT) i dziwiłem się dlaczego mogę odwoływać się do jego elementów bez operatora ::

Okazało się, że to wina tej linii:
#define GUT
Gdy zmienię w niej GUT na cokolwiek innego już nie mogę odwoływać się bez GUT::
 
Czy waszym zdaniem jest to zamierzone?

2 odpowiedzi

0 głosów
odpowiedź 14 lipca 2015 przez Wiciorny Ekspert (270,170 p.)

zauważ że elementy ... namespace zazwyczaj nie posiadaja "#"

To są "przestrzenie nazw" 

using namespace GUI; to jest poprawne.

 

Polecam artykuł http://edu.pjwstk.edu.pl/wyklady/pro/scb/PRG2CPP_files/node147.html

używając define GUT tak naprawdę korzystasz z biblioteki funkcji ... czyli samych deklaracji w tym momencie program wie, o jakie funkcja z jakiej biblioteki chodzi więc nie potrzebuje  wskazania dodatkowego 

komentarz 14 lipca 2015 przez Pan Kulomb Pasjonat (18,630 p.)

Tu chodziło o to, że includowałem sobie GUT.hpp, w którym było:

#ifndef GUT
#define GUT

#include "Config.hpp"

#include "Window.hpp"
...

#endif // GUT

Wewnątrz Config.hpp jest zdefiniowana przestrzeń nazw GUT, a w pozostałych plikach są zawarte implementacje klas z namespace GUT.

Gdy w main.cpp nie napiszę using namespace GUT; to mimo to mogę odwoływać się do GUT::Window bez GUT::. Natomiast gdy zmienię w GUT.hpp GUT na np. GUT_H problem znika.

O co ci tu chodziło?

To są "przestrzenie nazw" 

using namespace GUI; to jest poprawne.

 

0 głosów
odpowiedź 14 lipca 2015 przez Dorion300 Szeryf (90,250 p.)

#define do nie namespace....


Jeśli piszesz W namespace to nie musisz pisać za każdym razem ten namespace aby cokolwiek robić w tym namespace

 

PS:Podaj fragment kodu.

namespace st
{
int x;
void kl()
{
    x = 5;
}

}

void jd()
{
    st::x = 10;
}

 

komentarz 14 lipca 2015 przez Wiciorny Ekspert (270,170 p.)
ja nie pisze, że define to namespace :) przestrzenie nazw to nie bilbioteki.
komentarz 14 lipca 2015 przez Dorion300 Szeryf (90,250 p.)
Ja pisałem do autora tego wątku.
komentarz 14 lipca 2015 przez Pan Kulomb Pasjonat (18,630 p.)
Wiem, że define to nie namespace jednak linia:

#define GUT

działa dokładnie jak:

using namespace GUT;

Podobne pytania

0 głosów
2 odpowiedzi 175 wizyt
pytanie zadane 15 listopada 2019 w C i C++ przez Mała Mi Początkujący (270 p.)
0 głosów
1 odpowiedź 414 wizyt
pytanie zadane 1 lutego 2019 w C i C++ przez Hiskiel Pasjonat (22,830 p.)
0 głosów
1 odpowiedź 179 wizyt
pytanie zadane 19 kwietnia 2021 w PHP przez Filipczak Gaduła (4,020 p.)

92,576 zapytań

141,425 odpowiedzi

319,650 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...