如何解决如何在 C++ 中将派生类型指针序列化为接口类型对象?
接口 * base_ptr1 = new Derived1();
接口 * base_ptr2 = new Derived2();
理论上我应该在所有类中都有 serialize() 方法,但我的接口类型类没有数据成员,只有抽象虚拟方法。
解决方法
您可以添加纯 virtual
函数来进行序列化。
class Interface {
public:
virtual void read(std::istream& is) = 0;
virtual void write(std::ostream& os) const = 0;
};
std::istream& operator>>(std::istream& is,Interface& i) {
i.read(is);
return is;
}
std::ostream& operator<<(std::ostream& os,const Interface& i) {
i.write(os);
return os;
}
现在,具体的类只需要实现 read
和 write
并且为 Interface
实现的流操作符将适用于它们。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。