问题标签 [boost-serialization]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
531 浏览

c++ - boost.serialization - 免费版本和基类实现

我有一个“生成器”类,它基本上构造了它的子类。要使用这个东西,我只需将它子类化并传递正确的参数来构建我想要构建的对象。我想序列化这些东西,因为所有数据都在基础中,所以没有充分的理由为每个子类这样做。这是我的例子:

如果可能的话,我希望免费版本能够工作。是吗?

上面的版本出现了关于序列化不是 test_derived 成员的错误。

0 投票
3 回答
11963 浏览

c++ - 帮助编译和使用 boost c++ 库

我正在开发一个 C++ 项目,我想在其中使用 boost 的序列化库。我从 boost 的主页下载并安装了最新的 boost 库。

当我尝试编译并运行 boost 的演示序列化示例之一时,我得到了各种看起来像这样的错误:

我是 C++ 的新手,所以我将不胜感激。

谢谢

0 投票
1 回答
725 浏览

visual-c++ - 是否可以将 boost::serialization 与托管类一起使用?

我们有很多使用boost::serialization完美序列化的原生 c++ 类。

现在我们想将它们的一些成员字段更改为property,以便我们可以在PropertyGrids中使用它们。当我们将类定义更改为ref class X时,我们得到了大量这样的编译错误:

#1: error C2893: Failed to specialize function template 'boost::archive::text_oarchive &boost::archive::detail::interface_oarchive<Archive>::operator <<(T &)' d:\someAddress\someFile.cpp 58

#2: error C2784: 'std::basic_ostream<_Elem,_Traits> &std::operator <<(std::basic_ostream<_Elem,_Traits> &,const std::_Smanip<_Arg> &)' : could not deduce template argument for 'std::basic_ostream<_Elem,_Traits> &' from 'boost::archive::text_oarchive' d:\someAddress\someFile.cpp 58

我们这里有很多小类,所以为每个类编写一个包装器会很痛苦!

这是我们使用的示例类:

这是主要的测试代码:

甚至可以将boost::serialization与托管类一起使用吗?

编辑:

如果我们将类使用代码更改为:

那么我们只得到 1 个错误:

error C2027: use of undefined type 'boost::STATIC_ASSERTION_FAILURE<x>' D:\path\to\Boost\boostw\boost\archive\detail\check.hpp 60

0 投票
1 回答
2961 浏览

c++ - 将 boost 序列化与虚拟基类一起使用时,是什么导致 C4250(类通过支配地位继承成员)?

VC++ 编译器警告C4250含义对我来说很清楚。(但请参阅此处以获取解释。) 'class1' : inherits 'class2::member' via dominance

我目前遇到的问题是在序列化具有带有 boost::serialization (1.44.0)的抽象基类的类层次结构时收到此警告。

请注意,我的类 没有形成任何可能导致此警告的菱形继承层次结构,但该警告是由boost::detail::is_virtual_base_of_impl<...>序列化派生类实例时的实例化引起的。(这似乎是使用来自 Boost.TypeTraits 的is_virtual_base_of 。)


这是在 Visual Studio 2005 上重现警告的最小代码示例。请注意,代码应按原样放置到一个 cpp 文件中,并且应该可以编译。

还要注意代码中我用触发警告的注释标记的两点。如果BOOST_CLASS_EXPORT未使用,则不会触发警告,但更有趣的是,如果派生类不使用继承,也不会触发警告!(所以也许我毕竟不了解C4250。)virtual


这是编译器警告(啊!):


0 投票
1 回答
761 浏览

c++ - 提升序列化 - 序列化 std::tr1::shared_ptr?

Boost::Serialization 内置了对boost::shared_ptr<>.

有没有办法使用这种支持std::tr1::shared_ptr<>呢?
是否可以从std::tr1::shared_ptr<>to 转换boost::shared_ptr<>

0 投票
2 回答
1545 浏览

c++ - 序列化指向没有默认构造函数的类的指针时无法覆盖 save_construct_data

我正在尝试遵循此示例http://www.boost.org/doc/libs/1_42_0/libs/serialization/doc/serialization.html#constructors但我不断收到错误。按照示例,我在尝试访问私有变量时遇到错误(很公平):

但是,如果我将 save_construct_data 添加为好友,则会出现歧义错误:

我可以将函数定义移动到朋友声明中,但这很难看。

接下来我应该尝试什么?

谢谢,杰恩

0 投票
1 回答
1499 浏览

c++ - 序列化 variables_map

如何序列化/反序列化 boost::program_options::variables_map?我找不到已经实现的序列化函数,也不知道 variables_map 中有哪些函数可以用来提取和重新组装地图。

0 投票
3 回答
922 浏览

c++ - Boost:Serialization:谁来清理反序列化的数据?

我正在序列化对象的原始指针并将其发送到另一个应用程序。

反序列化时,我得到了另一个原始指针。这意味着 Boost::Serialization 在内部构造这个指针后面的对象。我现在很好奇谁拥有该对象的所有权,以及 Boost 是否会删除该对象,如果不再需要它。

一些可能更好地说明问题所在的代码:

0 投票
1 回答
723 浏览

serialization - boost::serialization 多态类型初始化

我有一个基类和 4 个派生类。我将所有派生类存储在基类指针类型的向量中。在第一次初始化期间,我使用它们的构造函数以不同的方式创建每个派生类型。基本上,他们每个人的 ctor 中都有不同的参数类型。(我必须提供一个受保护的默认 ctor 才能使 BOOST_CLASS_EXPORT 编译,但这是另一回事)。我不/不能保存这些派生类的所有成员(用 ctor 填充)。

现在,当我使用 boost::serialize 从磁盘加载对象时,这些成员(未序列化并且特定于每个派生类型)被销毁。而且,我想不出重新初始化这些派生类型的方法,因为我只存储基类指针。

我真正需要的是能够部分加载我的派生类型(指针),而不删除它们的所有内容。

有没有办法克服这个问题,也许是一个神奇的提升定义或函数调用?否则,根本不可能使用 boost::serialize 进行多态性。我应该遗漏一些东西,希望我能足够好地定义我的问题。

0 投票
1 回答
966 浏览

c++ - C ++ Boost TCP通道上的序列化对象,双向通信不起作用

我有一个班级,一个非常愚蠢的班级。此类的对象,我想通过 tcp 使用 asio by boost 发送它们。我的班级正确地与提升的东西建立了友谊并实现了方法序列化......

好吧,我希望客户端连接到服务器,将我的对象发送给它,然后服务器发回同一类的另一个对象。

我试图这样做:

在服务器中:

数据是可序列化的类。

在客户端:

好吧,它不起作用。它以某种方式阻塞。

这是古玩,因为问题是这种双向方案,如果我消除线 Q,W,X,Y 它工作!你知道如何解决这个问题吗?