C++ 朋友不能访问私有变量? class LongInt { friend ostream&operator

C++ 朋友不能访问私有变量? class LongInt { friend ostream&operator,c++,friend,C++,Friend,我认为您在LongInt之前的声明中缺少了一个const,这使得签名不同,并且编译器认为它与您声明为friend的函数不同。因为它不是该函数的朋友:签名不同。注意constmodi第二个参数的fier。ah,奇怪,它应该给我一个不同的错误消息。@实际上不应该。这是因为friend说明符不强制您拥有具有指定签名的函数。如果您试图在外部类/全局函数中使用私有成员,它将检查该类/全局函数是否正确在朋友列表中,-1不是真正的代码(给定的代码有语法错误和拼写错误) class LongInt {

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

因为它不是该函数的朋友:签名不同。注意
const
modi第二个参数的fier。

ah,奇怪,它应该给我一个不同的错误消息。@实际上不应该。这是因为
friend
说明符不强制您拥有具有指定签名的函数。如果您试图在外部类/全局函数中使用私有成员,它将检查该类/全局函数是否正确在朋友列表中,-1不是真正的代码(给定的代码有语法错误和拼写错误)
class LongInt
{

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

...
}

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


    return os;
}