Функция-член шаблона класса может быть реализована вне его объявления. Однако эта реализация должна быть включена в каждый исходный файл программы, содержащий вызов функции. Тогда компилятор сможет сгенерировать код функции из ее определения. В программу с несколькими исходными файлами можно ввести как объявление шаблона, так и определения всех его методов в одном файле заголовков, входящем во все исходные файлы. Для функций-членов шаблона класса включение определения функции в несколько исходных файлов не приводит к возникновению ошибки компоновщика “multiply definition symbol” (многократное определение символического имени).

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

Создание объектов по шаблонам классов

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

CList IntList;

Это объявление описывает IntList как объект версии шаблона класса CList, в которой каждое вхождение параметра Т заменено типом int, а каждое вхождение пара-метра I - константой 100. В результате, в полученном объекте элемент Buffer будет объявлен как массив из 100 целочисленных значений типа int, а в соответствии со вторым параметром функци¬ям-членам SetItem() и GetItem() будут переданы ссылки на значения типа int.

Пример 1.

Создать класс – шаблон input, который при вызове конструктора делает следующее:
- выводит на экран строку – приглашение;
- получает данные от пользователя;
- повторно выводит на экран строку – приглашение, если вводимые данные не соответствуют заданному диапазону.
Объекты типа input должны объявляться следующим образом:
input ob(“строка – приглашение”, мин_значение, макс_значение);

template class input
{
R data;
public:
input(char *s, R min, R max);
};
template input::input(char *s, R min, R max)
{
do
{
cout<< s << “: “;
cin>>data;
}
while(data < min || data > max);
}
int main()
{
input i(”integers”, 0, 10);
input c(”chars”, ‘a’, ‘z’);
getch();
return 0;
}