如何在 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 实现的流操作符将适用于它们。