整个同一模板类的友谊

时间:2012-12-07 21:40:27

标签: c++ templates c++11

请考虑以下事项:

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;

也就是说,有没有办法让同一模板类的朋友制作模板?

1 个答案:

答案 0 :(得分:10)

C ++ 03没有为此提供机制,但C ++ 11确实如此。

template<int N2> friend class A;

应该是朋友所有的实例。