假设我正在为二叉树创建一个类BT
,并且有一个描述该树的元素的类BE
,例如
template<class T> class BE {
T *data;
BE *l, *r;
public:
...
template<class U> friend class BT;
};
template<class T> class BT {
BE<T> *root;
public:
...
private:
...
};
这似乎可行;但是我对下面发生的事情有疑问。
我最初试图将朋友声明为
template<class T> friend class BT;
但是,似乎有必要在此处使用U
(或以外的其他方法T
),这是为什么呢?这是否意味着任何人BT
都是任何特定BE
班级的朋友?
在IBM页面上的模板和朋友页面上,有函数类型的朋友关系类型的示例,但类却没有(并猜测语法尚未在解决方案上收敛)。我更想了解如何针对我希望定义的朋友关系类型正确获取规范。