operator <<找不到匹配项

ptr*_*x01 0 c++ operator-keyword

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

    std::ostream& operator<<(std::ostream& os, Shape& a)
    {
        return os << a.out();
    }
Run Code Online (Sandbox Code Playgroud)

我想创建一个抽象基类,并且稍后可以简单地使用cout << Triangle/Square等,其中Triangle,Square是来自Shape的派生类.

如果我只是这样说它可以正常工作return os << "test"; 我猜它与a.out()没有被正确调用有关,我似乎无法查明问题.

Jos*_*eld 5

out成员函数返回void,因此它不会返回一个对象为你传递给 std::ostream::operator<<.也许你想要它回归std::string