无法在c ++ operator << overload中访问带有友元函数的私有成员

Scu*_*eve 0 c++ operator-overloading friend-function

所以我试图重载<<运算符.从我可以看到的所有来源,语法是正确的,但eclipse不喜欢它.

我收到了一些错误: Polynomial :: PrivateStruct*Polynomial :: head是私有的

并且: struct Polynomial :: PrivateStruct是私有的.

我想保持这个结构私有,以隐藏实现细节.

std::ostream& operator<<(std::ostream& outputStream, Polynomial& rhs)
    {
        Polynomial::PrivateStruct *p = rhs.head;
        //implementation details
        return outputStream;

    }
Run Code Online (Sandbox Code Playgroud)

和声明:

friend std::ostream& operator<<(std::ostream& outputStream, const Polynomial& rhs);
Run Code Online (Sandbox Code Playgroud)

jro*_*rok 6

声明和定义不匹配 - 一个引用const,另一个引用非const.匹配他们,你很高兴.