类模板和朋友类

时间:2016-05-12 15:34:06

标签: c++ templates friend

我有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;

有没有更好的方法,我想到的? 谢谢!

1 个答案:

答案 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>;