朋友无法访问私有变量?

时间:2014-02-28 04:13:35

标签: c++ friend

class LongInt
{

    friend ostream & operator <<(ostream & os, const LongInt & integer);

...
}

ostream & operator <<(ostream & os, LontInt & container)
{
    os << container.number.size(); //error here


    return os;
}

错误:'std :: vector LongInt :: number'是私有的          矢量数;                      ^

我不明白为什么我无法访问变量,是否必须对成员变量是向量这一事实做些什么?

2 个答案:

答案 0 :(得分:3)

因为它不是该功能的朋友:签名是不同的。注意第二个参数的const修饰符。

答案 1 :(得分:1)

我认为你在const之前的声明中缺少LongInt,这使得签名不同,并且编译器认为它与你声明为朋友的函数不同。