[英]Can I overload the << operator in a base class here?
因此,我希望创建一系列从基类派生的类,并且每个类都实现虚拟方法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
的输入类型。 目前,我正在每个派生类中实现重载,并指定输入类型。
我可以在基类中指定重载吗?
你说得差不多了。 一个问题是您不应该将指针用作operator<<
参数,因为这些运算符通常使用引用:
friend std::ostream& operator<<(std::ostream& os, const BaseDataType& obj)
{
os << obj.toString();
然后,您需要执行所有操作以在派生类中提供虚拟toString
方法-基类中的operator<<
将调用它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.