在c ++中调用基类的ostream友元函数

mje*_*kov 4 c++ iostream

所以,我有两个班:

class Base {
    private:
        int number;
    public:
        friend ostream & operator<<(ostream & output, const Base &n);
}

ostream & operator<<(ostream & output, const Base &n) {
    output<<n.a<<endl;
    return output;
}

class Child : Base {
    private:
        int second;
    public:
        friend ostream & operator<<(ostream & output, const Child &n);

}

ostream & output<<(ostream & output, const Child &n) {
    output<<n.second<<Base:: ????<<endl;
    return output;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,如何从子类调用基类的友元函数来输出其内容:

output<<n.second<<Base:: ????<<endl
Run Code Online (Sandbox Code Playgroud)

提前致谢 :)

Dav*_*vid 5

output<<n.second<<static_cast<const Base&>(n)<<endl;
Run Code Online (Sandbox Code Playgroud)


Mic*_*urr 3

如果您不喜欢强制转换:

ostream & operator<<(ostream & output, const Child &n) {
    const Base& b(n);

    output<< n.second << b << endl;
    return output;
}
Run Code Online (Sandbox Code Playgroud)

顺便说一句,一般来说,最好将std::endl流式传输留给呼叫者。