微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 C++ 中将派生类型指针序列化为接口类型对象?

如何解决如何在 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;
}

现在,具体的类只需要实现 readwrite 并且为 Interface 实现的流操作符将适用于它们。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。