访问匿名Subobject C ++(cout)

时间:2014-12-08 13:21:00

标签: c++ polymorphism subobject

class Parent
{
    ...
    friend ostream& operator<<(ostream&, const Parent&);
};

class Child : public Parent
{
    ...
    friend ostream& operator<<(ostream&, const Child&);
};

ostream& operator<< (ostream& os, const Parent& p)
{
    os << ... ;
    return os;
}

ostream& operator<< (ostream& os, const Child& c)
{
    os << c.Parent << ... ;    // can't I access the subobject on this way?
    return os;
}

如何在Child的运营商内部调用Parent的运营商?这只是给我错误“无效使用Parent :: Parent”

1 个答案:

答案 0 :(得分:4)

c.Parent不是有效语法,您的operator<<也不是成员函数。要调用正确的重载,请更改c

的上下文
ostream& operator<<(ostream& os, const Child& c)
{
    os << static_cast<const Parent&>(c);
    return os;
}