是否有可能成为一个类的 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/