我有一种情况,我在 C++ 中有一个类的对象,它需要使用 Linux 管道跨进程边界(进程 1 到进程 2)发送。我在网上搜索了如何在 C++ 中进行序列化。我找到了boost,但它需要在课堂上进行一些更改。在我的情况下,我无法更改课程。
这个类有很多指针,嵌套持续到3层(类1有类2类型的指针1->类2有类3类型的指针2->类3有类4类型的指针3->类4)。有什么方法可以使用管道发送这个对象,以便可以在第二个进程中重新创建它?
谢谢。
我有一种情况,我在 C++ 中有一个类的对象,它需要使用 Linux 管道跨进程边界(进程 1 到进程 2)发送。我在网上搜索了如何在 C++ 中进行序列化。我找到了boost,但它需要在课堂上进行一些更改。在我的情况下,我无法更改课程。
这个类有很多指针,嵌套持续到3层(类1有类2类型的指针1->类2有类3类型的指针2->类3有类4类型的指针3->类4)。有什么方法可以使用管道发送这个对象,以便可以在第二个进程中重新创建它?
谢谢。
您是否考虑过Memento 模式的应用?您可以创建一个或多个类来处理如何序列化对象(文本或二进制)的细节。
您为保存对象而创建的类也将知道如何从您在下一个过程中选择的序列化格式中实例化新对象。
您将不得不进行某种序列化,因为您不能跨管道或类似的东西复制构造。如果您无法更改类,那么您唯一的选择是编写一个使用顶级类的公共 API 的外部函数或类来获取所有部分并序列化该数据。然后在另一端,您必须从流中重建它。