Class 另一个模板类的模板类友元函数

Class 另一个模板类的模板类友元函数,class,function,templates,private,Class,Function,Templates,Private,我有一个由一对模板类组成的树,其中一个需要访问另一个的私有成员,最好只限于那些实际需要访问的成员函数。这是我的课程的简化说明: // Forward declaration template <typename K, typename V> class Tree; template <typename K, typename V> class Node { public: typedef typename Node<K, V>* N

我有一个由一对模板类组成的树,其中一个需要访问另一个的私有成员,最好只限于那些实际需要访问的成员函数。这是我的课程的简化说明:

//  Forward declaration
template <typename K, typename V> class Tree;

template <typename K, typename V> class Node {
    public:
        typedef typename Node<K, V>* NodeP;

        // ...
    private:
        K key;
        V val;

        //  Child nodes
        NodeP left;
        NodeP right;
};

template <typename K, typename V> class Tree {
    public:
        typedef typename Node<K, V>::NodeP NodeP;

        // ...

        void clear() { del(root); }
    private:

        //  Root node
        NodeP root;

        void del(NodeP start)
        {
            if (start->left != NULL)
                del(start->left);
            if (start->right != NULL)
                del(start->right);
            delete start;
        }
};
我不明白的是如何将del和树的其他成员函数声明为节点类的朋友。我试着用这句话让全班同学成为朋友:

模板好友类树

这可以编译,但这是:

模板友空树::delNodeP

。。。不。我想知道是不是我让他们太依赖彼此的实例了?有没有办法做我想做的事?谢谢