【发布时间】:2012-12-07 21:40:26
【问题描述】:
考虑以下几点:
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 感到疯狂吗?
也就是说,有没有办法让同一个模板类的模板成为朋友?
【问题讨论】:
-
这段代码应该没有问题。
-
除非因为我是私人的所以它不起作用......
-
很好奇,GCC 同意,但我可以发誓这是完全合法的。哦,好吧。
-
我通常会在发布之前尝试我的代码;)
-
“同一个模板类中的友谊”...让我们周围有友谊!