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();
Несмотря на простоту данного примера, он демонстрирует, как легко и элегантно при помощи пространств имен можно объединить код из внешнего источника с вашим собственным. Несмотря на определенные трудности, связанные с проблемами разрешения конфликтов имен, использование пространств имен переводит решение этих задач в сферу возможного.