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()无法正常调用有关,我似乎无法确定问题。
答案 0 :(得分:5)
out
成员函数返回void
,因此它不会返回一个对象供您传递给std::ostream::operator<<
。也许您希望它返回std::string
?