运营商LT;<找不到匹配

时间:2013-05-04 16:11:25

标签: c++ operator-keyword

    class Shape
    {
        virtual void out() = 0;
    };

    std::ostream& operator<<(std::ostream& os, Shape& a)
    {
        return os << a.out();
    }

我想创建一个抽象基类,并且能够简单地使用cout&lt;&lt;三角形/正方形等稍后,使用Triangle,Square是Shape的派生类。

如果我只是简单地说return os << "test";它就可以了。所以我猜这与a.out()无法正常调用有关,我似乎无法确定问题。

1 个答案:

答案 0 :(得分:5)

out成员函数返回void,因此它不会返回一个对象供您传递给std::ostream::operator<<。也许您希望它返回std::string