Для определения пространства имён используется ключевое слово namespace, за которым должен следовать идентификатор (имя) определяемого пространства (анонимность не допускается), а затем в фигурных скобках должны располагаться константы, переменные, классы и прочие сущности, входящие в это пространство.
Пример:
namespace audio
Полное имя переменной или класса, входящих в пространство имён, состоит из имени пространства, за которым следуют два двоеточия (::), и имени самой переменной или класса.
{
const int MONO = 1;
const int STEREO = 2;
}
Полное имя нужно указывать во всех случаях, когда обращение происходит за пределами того пространства имён, в котором была определена переменная, константа или класс.
Пример:
// ...
Пространства имён могут быть вложенными, например:
void main ()
{
func (audio::MONO);
// ...
}
void func (int mode)
{
switch (mode)
{
case audio::MONO:
// ...
break;
case audio::STEREO:
// ...
break;
}
}
namespace configuration
В примере определены пространство имён configuration и два вложенных в него пространства ini_files и xml_files.
{
namespace ini_file
{
class reader
{
// ...
}
}
namespace xml_files
{
class reader
{
// ...
}
}
}
Полное имя теперь будет включать все идентификаторы пространств, например, configuration::ini_files::reader или configuration::xml_files::reader.