Язык программирования C++. Вводный курс


Использование пространства имен - часть 3


 

int main()

{

  // IBM_Canada_Laboratory::Matrix

  Matrix mat(4,4);

 

  // Ошибка: IBM_Canada_Laboratory::Array невидим

  Array<int> ia(1024);

 

  // ...

}

Как мы уже упоминали, все компоненты стандартной библиотеки С++ объявлены внутри пространства имен std. Поэтому простого включения заголовочного файла недостаточно, чтобы напрямую пользоваться стандартными функциями и классами:

#include <string>

// ошибка: string невидим

string current_chapter = "Обзор С++";

Необходимо использовать директиву using:

#include <string>

using namespace std;

 

// Ok: видим string

string current_chapter = "Обзор С++";

Заметим, однако, что таким образом мы возвращаемся к проблеме “засорения” глобального пространства имен, ради решения которой и был создан механизм именованных пространств. Поэтому лучше использовать либо квалифицированное имя:

#include <string>

// правильно: квалифицированное имя

std::string current_chapter = "Обзор С++";

либо селективную директиву using:

#include <string>

using namespace std::string;

 

// Ok: string видим

string current_chapter = "Обзор С++";

Мы рекомендуем пользоваться последним способом.

В большинстве примеров этой книги директивы пространств имен были опущены. Это сделано ради сокращения размера кода, а также потому, что большинство примеров были скомпилированы компилятором, не поддерживающим пространства имен – достаточно недавнего нововведения С++. (Детали применения using-объявлений при работе с стандартной библиотекой С++ обсуждаются в разделе 8.6.)

В нижеследующих главах мы создадим еще четыре класса: String, Stack, List и модификацию Stack. Все они будут заключены в одно пространство имен – Cplusplus_Primer_3E. (Более подробно работа с пространствами имен рассматривается в главе 8.)

Упражнение 2.21

Дано пространство имен

namespace Exercize {

  template <class elemType>

    class Array { ... };




Начало  Назад  Вперед



Книжный магазин