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

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

我想创建一个抽象基类,并且以后能够简单地使用 cout << Triangle/Square 等,Triangle、Square 是 Shape 的派生类。

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

4

1 回答 1

5

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

于 2013-05-04T16:13:08.870 回答