R Справочное руководство по С++

R.14.7 Друзья.

   


Назад  |  Вперёд

Функция-друг для шаблона типа не является неявной шаблонной функцией, например:

           template<class T> class task {
              // ...
              friend void next_time();
              friend task<T>* preempt(task<T>*);
              friend task* prmt(task*);  // ошибка
              // ...
           };

Здесь функция next_time() становится другом всех классов task, а каждый класс task имеет в качестве друга функцию preempt() c соответствующими типами параметров. Функцию preempt() можно определить как шаблон типа.

           template<class T>
              task<T>* preempt(task<T>* t) { /* ... */ }

Описание функции prmt() является ошибочным, поскольку типа task не существует, а есть только специальные шаблонные типы task<int>, task<record>, и т.д.


Назад  |  Вперёд


OtDiatlovaOU
К началу книги

Оформление и дизайн книги OtDiatlovaOU.
Вся книга, архив.