最佳答案
假设我正在为二叉树 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 页面有不同类型的函数好友关系的示例,但没有类(并且猜测语法还没有在解决方案中趋于一致)。我更愿意了解如何获得正确的规格类型的朋友关系,我希望定义。