很抱歉,这个问题似乎已被多次询问,但我无法得到其他答案,以便我的设置工作。我有以下类和函数设置:
namespace ddd {
template <typename T>
class A {
...
};
template <typename T, typename U>
A<T> a_func(const A<U> &a) {
...
}
}
我想将a_func声明为A的朋友,我希望它能使a_func成为A的所有实例的朋友,无论哪个类型名用于T和U(例如,a_func可以访问A)
谢谢!
答案 0 :(得分:1)
你可以这样做(看起来就像你拥有它一样):
template<typename X>
class A {
template<typename T, typename U>
friend A<T> a_func(const A<U>& a);
};
template<typename T, typename U>
A<T> a_func(const A<U>& a) {
// whatever
}