问题标签 [cereal]

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 回答
1826 浏览

c++ - Cereal 不支持原始指针

编辑:问题标题是基于对我得到的编译器错误的深刻误解。我(愚蠢地)假设错误是,我试图反序列化为我在函数内部声明的对象。这是完全错误的。我自己没有做足够的调试工作,否则我本可以找出问题所在。所以标题很误导,我改变了它。感谢 Андрей Беньковский 的帮助。


我正在使用谷物在我的引擎中为 3D 模型编写序列化函数,这被证明非常高效且易于使用。到目前为止,当我测试(反)序列化一个简单的网格时,一切都很好。但现在我试图反序列化另一个类,但遇到了一个我没有得到的问题。

这是我的课,应该反序列化:

它给了我编译器错误:谷物不支持序列化原始指针 - 请使用智能指针,即使它不是指针。在代码的另一部分,类似的东西也可以正常工作。如果有人能帮我解决这个问题,我会很高兴。

0 投票
3 回答
2960 浏览

c++ - 如何使用 Cereal 序列化 json 对象而不将其包含在子对象中

假设我有一个 C++ 类,如下所示:

我想使用 Cereal 将该结构序列化为 JSON。所以我添加了一个这样的序列化函数:

当 Point 是另一个对象的成员或数组的元素时,这可以正常工作。但是如果我想让 Point 成为整个 JSON 文件的主要对象,它就不能正常工作。例如,使用以下代码:

我得到以下输出:

我想删除"value0"密钥并提升对象以占用整个文件,如下所示:

我似乎可以这样做的唯一方法是基本上重新实现序列化功能,手动添加键名。

有什么方法可以利用我已经为该类实现的序列化函数吗?

0 投票
0 回答
513 浏览

c++ - 使用 Cereal,如何将 C-Style 数组序列化与多态类一起使用?

我在这里有一个简单的课程:

这工作正常,我的意思是,序列化进出测试正常。

当我想在这里使用多态性时,麻烦就开始了。这个子类继承自一个纯虚拟母类,以及其他“类女儿”类。

而且,当我想使用CEREAL_REGISTER_TYPE(...)宏注册我的 clDaughter 类时,

编译器崩溃

“谷物找不到提供的类型和存档组合的任何输出序列化函数”

看来问题确实来自这种binary_data(...)方法,因为如果我__pData在循环中序列化数组(丑陋的风格)

我没有错误,它工作正常。只有当我binary_data()CEREAL_REGISTER_TYPE()一起使用时。

我错过了什么 ?

(为了先发制人,我确实想使用它,binary_data()因为它比循环快 20-30 倍,我需要在这里快速)

感谢您的帮助

0 投票
1 回答
915 浏览

c++ - Cereal:序列化多态类型

我在序列化多态类型时遇到问题。实际上,我只是将示例拆分为:http ://uscilab.github.io/cereal/polymorphism.html几个文件。它编译得很好,但是在运行时我得到一个异常,告诉我我无法序列化在代码中到达此行时未注册的多态类型: oarchive( ptr1, ptr2 ); 这应该将 ptr1 和 ptr2 的内容序列化为流。

我附上文件,以便任何人都可以看到发生了什么。

在此先感谢您的时间!最好的,罗杰。

0 投票
0 回答
835 浏览

c++ - 更改为 XML 后“谷物找不到任何输出序列化函数”

我想在名为 theia 的库中序列化一个 Reconstruction 类。Reconstruction 类确实有一个序列化函数:

已经到位的序列化工作正常,如下所示:

但是当我将它更改为 XMLOutputArchive(添加必要的#include)时,它不再起作用了!

错误如下:

[...]

0 投票
1 回答
862 浏览

c++ - How to serialize a boost::ptr_vector using cereal?

Is it possible to serialize a boost::ptr_vector instance using cereal? If so, how?

0 投票
1 回答
462 浏览

c++ - 虚拟继承和多态性:谷物库是否与对象布局混淆?

我有四个遵循经典菱形图案的类( AB和)C和一个包含. 我想使用谷物序列化库序列化这些类。DContainerunique_ptr<A>

所有类都有谷物saveload函数,但我只将它们包含在BandContainer中,因为它们是本示例中唯一使用的类。

我使用这些类如下:

我得到以下输出:

我的问题是:这可能是谷物中的一个错误,还是我没有通过虚拟继承获得什么?

是否期望给定对象的字段地址在 C++ 程序中会发生变化?

0 投票
1 回答
612 浏览

c++ - 使用命名值对(nvp)反序列化多态类型时出现“cereal::Exception”

尝试反序列化序列化命名值对的多态类时,我收到带有消息的“cereal::Exception”:“JSON 解析失败 - 未找到提供的 NVP”。难道我做错了什么?

这是标题:

和我的 cpp 文件:

0 投票
3 回答
19451 浏览

c++ - C++ CMake 编译错误(/usr/bin/ld: 找不到)

*我知道对此有很多问题,但在谈论 CMake 时它们根本没有多大帮助,因此我决定提出这个问题 *

因此,我正在研究 CLion,它使用 CMake 导入并为编译器提供参数,并成功包含(导入)了位于名为“ExternalLibraries”的文件夹中的外部库(谷物:将类序列化为 json 文件)我的项目文件夹的根目录。它工作得很好,直到我重新启动 IDE 并尝试再次运行代码......它返回了一个编译错误(我认为)。

我的 CMake 文件如下所示:

当我尝试运行/编译时,shell 给了我这个:

我不确定发生了什么,因为库似乎实际上已导入代码(包括谷物时没有红色字母),正如我之前所说,我认为它刚刚停止工作。

有人可以告诉我我的 CMake 文件是否有问题吗?

PD:这是一张截图,以防万一有人需要。

PD2:我正在使用基本操作系统:Freya(Ubuntu 14.04)

在此处输入图像描述

0 投票
0 回答
1487 浏览

c++ - C++ Serialization with Cereal - 如何最好地序列化多态类

我即将用Cereal实现我的对象图(实际上是一棵树)的序列化。

Cereal 不支持序列化原始指针(这些指针指向的对象)。我目前的想法是getType()在对象上有一个函数来找出它们的类型,然后根据它们的类型用工厂构造它们。

创建正确的对象后,我们可以使用存档对其进行初始化。

这绝对不是一个理想的解决方案,因为每个类都需要从其getType()函数返回一个唯一类型。

如何改进这种架构?