运算符<<和继承
我在C ++中有以下类:
class Event {
//...
friend ofstream& operator<<(ofstream& ofs, Event& e);
};
class SSHDFailureEvent: public Event {
//...
friend ofstream& operator<<(ofstream& ofs, SSHDFailureEvent& e);
};
我想要执行的代码是:
main(){
Event *e = new SSHDFailureEvent();
ofstream ofs("file");
ofs << *e;
}
这是一种简化,但我想要做的是将几种类型的事件写入文件
在一个文件中。但是,不是使用运算符&lt;&lt; SSHDFailureEvent,它使用运算符&lt;&lt;事件。有什么方法可以避免这种行为吗?
谢谢
没有找到相关结果
已邀请:
4 个回复
细屠截殴些
。 您可以在基类中定义虚函数
并将其重新定义为所有派生类,并仅将
定义为,
膏焦凑
闲窍
只要print(或printTo)是公共的,就不需要使流操作符超载朋友。 您可以选择使用默认实现或将print方法设置为纯虚拟。 您还可以使
成为一个公共非虚拟函数,调用受保护或私有虚拟函数,就像所有虚函数一样。
车料
在基地和孩子们。 要么 - 尝试动态地将基类强制转换为它的子类。