我正在做的应用程序有问题。我需要使用 boost 序列化来序列化一些数据包。根据文档,可以使用BOOST_CLASS_EXPORT_KEY
和BOOST_CLASS_EXPORT_IMPLEMENT
分别进入 .hpp 和 .cpp 文件,以便能够使用多态基指针序列化派生类。
所以这就是我所拥有的:
.hpp:包含我的类声明并最终BOOST_CLASS_EXPORT_KEY(mynamespace::mypacket)
.cpp:包含我的类定义和BOOST_CLASS_EXPORT_IMPLEMENT(mynamespace::mypacket)
到目前为止一切都运行良好,但是当需要序列化时,我得到一个 bad_alloc 错误。
我通过显式调用register_type<mypacket>()
我需要使用的存档上的方法来解决这个问题。
但这是我的问题:boost 的 EXPORT* 是为了避免调用 register_type 方法还是我做错了什么?我有点想在我的代码中做两次相同的工作,但更重要的是,如果我们之后仍然必须在存档上使用 register_type,我看不到使用导出密钥 + 实现的任何优势!
我在这里和其他地方阅读了其他一些帖子,似乎我不是唯一一个尝试这个问题的人,但我还没有找到任何答案。