4

是否有可能成为一个类的朋友,一个类模板的所有可能的变体?

只是为了澄清,例如,这样的事情:

class A
{ friend template B; }    // syntactic error yeah

所以任何B<X>变体都可以操纵A.

A是一个小而简单的类,有很多朋友在操作它的属性。只有其中一个需要成为模板。我知道我可以这样做:

template <class T>
class A
{ friend class B<T>; }

但是所以我不得不在所有其他朋友中更改我的代码,我想避免它。

4

1 回答 1

5

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

class A{
    template<typename T>
    friend class B;
};

这将使每个专业的class B朋友成为class A. 我有一个类似的问题,但目标相反:限制一些专业化:匹配参数的朋友模板函数实例化

于 2020-08-05T01:25:33.397 回答