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




Определение шаблона класса - часть 6


/p>

   class Buffer;

(Отметим, что аргументы по умолчанию для параметров шаблонов не поддерживаются в компиляторах, реализованных до принятия стандарта C++. Чтобы примеры из этой книги, в частности из главы 12, компилировались большинством современных компиляторов, мы не использовали такие аргументы.)

Внутри определения шаблона его имя можно применять как спецификатор типа всюду, где допустимо употребление имени обычного класса. Вот более полная версия определения шаблона QueueItem:

template <class Type>

class QueueItem {

public:

   QueueItem( const Type & );

private:

   Type item;

   QueueItem *next;

};

Обратите внимание, что каждое появление имени QueueItem в определении шаблона – это сокращенная запись для

QueueItem<Type>

Такую сокращенную нотацию можно употреблять только внутри определения QueueItem (и, как мы покажем в следующих разделах, в определениях его членов, которые находятся вне определения шаблона класса). Если QueueItem

применяется как спецификатор типа в определении какого-либо другого шаблона, то необходимо задавать полный список параметров. В следующем примере шаблон класса используется в определении шаблона функции display. Здесь за именем шаблона класса QueueItem

должны идти параметры, т.е. QueueItem<Type>.

template <class Type>

void display( QueueItem<Type> &qi )

{

   QueueItem<Type> *pqi = &qi;

   // ...

}




Содержание  Назад  Вперед