Witam.
Wyczytałem postulat odnośnie przyszłości przestrzeni nazw:
"Zamiast zewnętrznych zmiennych globalnych należy stosować zmienne w nazwanych przestrzeniach nazw."
Moje pytanie brzmi, jak to zrealizować?
Mając plik1.cpp i w nim jakis namespace ze zmienna
namespace przyklad { int liczba; }
Chcąc użyć zmiennej
przyklad::liczba
w pliku plik2.cpp muszę zaincludować jakoś tą przestrzeń. Potrzebuję wtedy headera. Z kolei w headerach (z tego co mi wiadomo) nie powinno deklarować się zmiennych (oprócz const).
Jak więc rozwiązać problem zmiennych globalnych w przestrzeniach nazw?
Jedyne rozwiązanie jakie mi przychodzi do głowy, to:
//plik1.h
namespace przyklad {
extern int liczba;
}
//plik1.cpp
#include "plik1.h"
namespace przyklad {
int liczba;
}
//plik2.cpp
#include <iostream>
#include "plik1.h"
int main()
{
std::cout << przyklad::liczba;
return 0;
}
Być może jednak istnieje rozwiązanie inne, bez konieczności tworzenia pliku nagłówkowego?