【发布时间】:2014-08-15 11:58:06
【问题描述】:
所以我希望创建一系列从基类派生的类,每个类都实现了虚拟方法std::string toString() const。我可以像这样在基类中为
class BaseDataType
{
friend std::ostream& operator<<(std::ostream& os, const BaseDataType* obj)
{
os << obj->toString();
return os;
}
.... rest of class
我的问题在于指定obj 的输入类型。目前,我正在每个派生类中实现重载,并指定输入类型。
能否在基类中指定重载,如果可以,如何指定?
【问题讨论】:
-
当你尝试时,出了什么问题?
-
您在问题中几乎有自己的答案,但我建议您参考而不是指针。为什么它不适合你?
-
这里更规范的形式是
std::ostream& operator<<(std::ostream& os, const BaseDataType& obj);通过引用获取对象。
标签: c++ operator-overloading ostream