Поделиться через


Члены шаблонов классов

Члены шаблонов классов аналогичны членам любого класса. Они могут быть статическими или нестатическими, членами данных или функций либо даже другими шаблонами. Их можно определить в классе шаблона или вне его. Члены класса шаблона могут ссылаться на неизвестные типы, определенные в списке аргументов шаблона, как если бы они были допустимыми именами типов, и на неизвестные значения объектов, определенные в списке аргументов шаблона, как если бы они были константными выражениями.

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

template < template-argument-list > definition

Заметки

Декларатор функции-члена вне класса шаблона также должен указывать аргументы шаблона.

template-name < template-argument-list > :: identifier

Пример

// members_of_class_templates1.cpp
// compile with: /c
template <class T, int i> 
class TempClass {
   int MemberSet(T, int);
};

template <class T, int i> 
int TempClass< T, i >::MemberSet( T a, int b ) {
   if( ( b >= 0 ) && (b < i) ) {
      Tarray[b++] = a;
      return sizeof( a );
   }
   else
      return -1;
}

В C++ также можно использовать вложенные шаблоны, называемые шаблонами членов. Шаблоны членов могут быть шаблонами вложенных классов или шаблонами функций-членов.

См. также

Ссылки

Шаблоны классов