是否有可能成为一个类的 friend ,一个类模板的所有可能的变体?
只是为了澄清,例如,这样的事情:

class A
{ friend template B; }    // syntactic error yeah
因此,任何 B<X> 变体都可以操作 A 的任何 protected 属性。A 是一个小而简单的类,有很多操作其属性的 friend 。只有其中一个需要是模板。我知道我可以这样做:
template <class T>
class A
{ friend class B<T>; }
但是所以我必须在所有其他 friend 中更改我的代码,我想避免它。

最佳答案

你可以像这样定义一个 friend 模板类:

class A{
    template<typename T>
    friend class B;
};
这将使 class B 的每个特化成为 class A 的 friend 。我有一个类似的问题,但目标相反:限制一些专业:Friend template function instantiations that match parameter

关于C++:模板可以成为类的 friend 吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/63256976/

10-13 08:29
查看更多