与模板类友一起深入研究类模板
定义二叉树类(BT)及其元素类(BE)时, BT 访问BE 私人会员需要建立好友关系。然而,理解正确定义关系的底层机制至关重要。
最初,您尝试将好友关系声明为 template
相反,您应该使用不同的模板参数名称,例如:
template<class T> class BE { template<class U> friend class BT; };
此声明表示任何 BT 类,无论其模板如何参数,是所有具有匹配模板参数的 BE 类的友元。
考虑以下示例以进一步阐明不同类型的友元关系:
template<typename T> struct foo { template<typename U> friend class bar; };
在这种情况下,bar 是 foo 的友元,无论 bar 的模板参数如何。 bar 的任何特化都将是 foo 的任何特化的友元。
template<typename T> struct foo { friend class bar<T>; };
这里,仅当 bar 的模板参数与 foo 的模板参数匹配时,bar 才是 foo 的友元。因此,只有 bar
在您的特定场景中,朋友类 bar
以上是如何在具有不同模板参数的模板类中定义好友关系?的详细内容。更多信息请关注PHP中文网其他相关文章!