void main() (
using namespace C;
cout « a « "\n";
cout « b « "\n";
cout « с « "\n";
Введение в программу чужого кода с помощью пространств имен
Одним из вышеупомянутых достоинств пространств имен является возможность вводить в свои программы код, написанный другими, не заботясь о вероятных совпадениях имен. Часто такая возможность бывает кстати при использовании библиотек классов и средств разработки программ сторонних производителей.
Представим себе следующую ситуацию. Вам поручено разработать сложное мультимедийное приложение, для которого требуется значительное количество графических функций, которых у вас, разумеется, нет. И в тот момент, когда вы уже готовы отчаяться, входит ваш шеф и сообщает, что, предвидя эту ситуацию, он купил библиотеку классов MegaKiutz, которая содержит все необходимое для поддержки графики в вашей разработке. Вы открываете описание и с ужасом обнаруживаете, что MegaKiutz широко использует класс Error. К несчастью, вашей командой уже введен собственный тип Error для кодов ошибок. Исходного кода библиотеки MegaKiutz нет, и, с другой стороны, просто невозможно переписать уже наработанный вашей командой код, чтобы заменить описание типа Error.
Единственным приемлемым решением в данной ситуации оказывается пространство имен. Необходимо поместить определения библиотеки MegaKiutz в ее собственное пространство имен и выборочно использовать определения, которые позволят довести вашу разработку до конца. Самой большой трудностью является необходимость поместить все заголовочные файлы в объявления пространств. К счастью, объявления пространств не обязаны идти одно за другим.
Существует и еще более эффективный способ, который не требует изменения заголовочных файлов. Листинг 24.17 представляет промежуточный заголовочный файл, в котором создается пространство имен библиотеки классов MegaKiutz.
#ifndef 3RDPARTY_H ^define 3RDPARTY К