我有一个小问题,我的<<运算符未被正确调用。
这就是我所拥有的:
class SomeInterface
{
friend std::ostream& operator<<(std::ostream& str, const SomeInterface& data);
protected:
virtual void print(ostream& str) const = 0;
};
inline std::ostream& operator<< (std::ostream& o, SomeInterface const& b)
{
b.print(o);
return o;
}
}
调用代码如下所示:
SomeInterface* one = new someConcrete ();
cout << one;
&lt;&lt;重载函数我希望在接口上调用不是,更不用说调度到派生类了。
答案 0 :(得分:3)
尝试:
cout << *one;
您的代码要求打印指针,而operator<<
需要const SomeInterface&
参考。
答案 1 :(得分:0)
您正在调用std::ostream& operator<< (std::ostream& o, void*);
,因为one
的类型是指针。
尝试:
cout << *one;
这将调用带有(引用)实际对象的重载,而不是指针本身