请考虑以下事项:
template<int N>
class A
{
public:
A() : i(N) {}
template<int K>
void foo(A<K> other)
{
i = other.i; // <-- other.i is private
}
private:
int i;
};
int main()
{
A<1> a1;
A<2> a2;
a1.foo(a2);
return 0;
}
有没有办法让'other.i'可见而将 i 和 foo 移动到公共基类或做某事加入朋友类A&lt; 1&gt; ?
也就是说,有没有办法让同一模板类的朋友制作模板?
答案 0 :(得分:10)
C ++ 03没有为此提供机制,但C ++ 11确实如此。
template<int N2> friend class A;
应该是朋友所有的实例。