我有Node类whice是朋友,BinaryTree类包含Node类型的元素。我想制作任何类型的BinareTree,所以我在两个类上都使用模板。就像在这段代码中一样:
template <class T>
class Node
{
T value;
Node<T> *left, *right;
friend template <typename T> class BinaryTree; // here is the problem
};
template <class Y>
class BinaryTree{...};
如果我将它用作模板,我在友元类BinaryTree的声明中需要什么语法? 我的目标是能够写下:
BinareTree<int> tree;
有没有更好的方法,我想到的? 谢谢!
答案 0 :(得分:4)
如果您查找template friends的语法,您将找到正确的方法:
class A {
template<typename T>
friend class B; // every B<T> is a friend of A
template<typename T>
friend void f(T) {} // every f<T> is a friend of A
};
虽然您可能只想与特定的朋友联系:
friend class BinaryTree<T>;