【发布时间】:2012-02-16 13:26:05
【问题描述】:
假设我正在为二叉树创建一个类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 页面提供了函数但没有类的不同类型朋友关系的示例(并且猜测语法尚未收敛到解决方案上)。我更愿意了解如何为我希望定义的朋友关系类型获得正确的规范。
【问题讨论】: