Подразделы

Другие разделы

Дата и время

27/12/2024 00:27:45

Авторизация

Имя:
Пароль:
Зарегистрироваться
Восстановить пароль
 

printДрузья шаблона класса

printПример определения друзей для шаблона класса

// предварительные объявления для дружественной функции-шаблона
template<class T> class task; // есть класс-шаблон
template<class T> task<T>* preempt(task<T>*); 
          // есть функция-шаблон, у которой аргумент - класс-шаблон

template<class T> class task {
  // ...
  friend void next_time(); // друг - обычная функция
  friend void process(task<T>*); // друг - экземпляр перегруженной функции
                                 // (не шаблон)
                                        // друг - конкретная инстанция шаблона функции
                                        // с соответствущими аргументами;
  friend task<T>* preempt<T>(task<T>*); 
                                // друг - функция-шаблон с таким же аргументом, как у класса
                                // этот друг требует предварительных объявлений см. выше

  template<class C> friend int func(C); // все инстанции шаблонной функции 
                                        // с любыми аргументами
  friend class task<int>; // друг - конкретная инстанция класса-шаблона
  template<class P> friend class frd; // друг - все инстанции класса-шаблона
  // ...
};
loading