Class 个模板和朋友 Class 个

Class templates and friend Classes

我有 Node class,它与包含 Node 类型元素的 BinaryTree class 是朋友。我想制作任何类型的 BinareTree,所以我在两个 classes 上都使用了模板。就像在这段代码中一样:

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{...};

如果我将朋友 class BinaryTree 用作模板,我需要什么语法? 我的目标是能够写:

BinareTree<int> tree;

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

如果您查找 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>;