1. 特化friend class

template<class T> class Node;
template<class T>
class Tree{
friend class Node<T>;
}

2. 特化friend function
1) 如果函数名前面没有::,就绝对不会引用某个template实体
2) 如果函数名前面含有::,编译器会优先匹配常规non-template 函数, 然后匹配function templates
namespace boost{
template<class T> void checked_delete(T* x);
}

class Test{
friend void boost::checked_delete<>(Test* x);
};

3. 把一个template 的所有实体都指定为某个class的friend.

class manager{
template<class T>friend class Task;
template<class T>friend void Schedule<T>::dispatch(Task<T>*);
}

相关文章:

  • 2021-06-12
  • 2021-08-13
  • 2021-06-18
  • 2021-11-17
  • 2022-12-23
  • 2021-08-07
  • 2022-12-23
  • 2021-04-11
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-08-13
  • 2021-09-11
  • 2021-06-19
  • 2021-06-28
相关资源
相似解决方案