gpt4 book ai didi

c++ - 是否可以将现有对象传递到 Boost.Serialization 负载中?

转载 作者:太空狗 更新时间:2023-10-29 23:17:43 26 4
gpt4 key购买 nike

我正在使用 Boost 的序列化库来保存和加载应用程序的状态。这些对象依赖于 TCP 连接。现在,我正在将一个指向 TCP 连接的指针分发到反序列化后的对象中,但事实证明,追踪在加载过程中创建的所有对象并不实用。

理想情况下,我希望能够在创建对象时将 TCP 连接传递给对象,也许作为构造函数参数。我可以找到关于在序列化库中使用非默认构造函数的说明,但这些说明假定参数本身可以仅使用存储在存档文件中的信息来构造。是否可以在反序列化过程中以某种方式注入(inject)预先存在的对象?

最佳答案

最后,我使用 boost::archive::text_iarchive 作为基类创建了一个新的存档类,如下所示:

struct my_iarchive : public boost::archive::text_iarchive {
my_iarchive(std::istream& is, socket* sock) :
boost::archive::text_iarchive(is), sock(sock) {}

socket* sock;
};

然后,在反序列化方法中,我们可以通过将存档转换为 my_iarchive 来获取我们的用户数据。

template <class Archive>
void load(Archive& ar, const unsigned int version)
{
m_socket = (static_cast<my_iarchive&>(ar)).sock;
}

关于c++ - 是否可以将现有对象传递到 Boost.Serialization 负载中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16702338/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com