运营商<<没有找到匹配
问题描述:
class Shape
{
virtual void out() = 0;
};
std::ostream& operator<<(std::ostream& os, Shape& a)
{
return os << a.out();
}
我想创建一个抽象基类,并能够简单地COUT < <三角/广场等以后使用,有三角形,正方形由形状是派生类。运营商<<没有找到匹配
它工作正常,如果我只是说return os << "test";
所以我猜这是与a.out()没有得到正确调用有关,我似乎无法查明问题。
答
out
成员函数返回void
,因此它不会返回一个对象供您传递给std::ostream::operator<<
。也许你想要它返回std::string
?
你打电话给运营商? – juanchopanza 2013-05-04 16:13:13
你应该通过const引用来使用'a'。 – chris 2013-05-04 16:39:56