694 ________Часть IV. Новые возможности C++

II Объявление пространства имен MegaKlutz

namespace MegaKlutz

{

ftinclude <inegaklutz.h>

#include <animate.h>

#include <3Dgraph.h> ttinclude <doitall.h> }

// Наш псевдоним namespace MK = MegaKlutz;

#endif ' '

Как легко видеть, все, что содержится в заголовочных файлах, становится принадлежностью пространства имен и требует теперь уточняющего префикса при использовании. Листинг 24.18 демонстрирует выдержку из кода, в котором имеется ваше определение типа Error и версия из библиотеки классов MegaKlutz.

^include <3rdparty.h>

// Версия Error, используемая вашей командой typedef unsigned long Error;

/*

Эта функция выводит цифровое изображение на экран и преобразует его в логотип компании Amalgamated Woodchuck Feed Corporation

*/

Error MorphToWoodchuck(long xaxis, long yaxis) {

/'/ Пусть классы MegaKlutz сделают свое дело

MK::Error Result;

Result = MK::MorphImage(x, у, ...);

// Преобразование кода ошибки от MegaKlutz //в код ошибки, принятый у нас return (Error) Result.GetErrorCode();

Несмотря на простоту данного примера, он демонстрирует, как легко и элегантно при помощи пространств имен можно объединить код из внешнего источника с вашим собственным. Несмотря на определенные трудности, связанные с проблемами разрешения конфликтов имен, использование пространств имен переводит решение этих задач в сферу возможного.