自由函数中的类型转换

沃尔玛

使用类库jsoncpp来序列化我的C ++对象和数据(例如,在Python中对其进行绘制),我真的厌倦了代码中将std::vector< double >s转换Json::Values的所有循环我最终一次又一次地重新键入相同的行。因此,我想让它变得容易些。

我有两个用例:将STL类型(至少std::vectorstd::map)从和转换为Json::Value,并使用我自己的数据类型执行此操作。

自己的数据类型的解决方案:

  • 定义构造函数期望值const Json::Value&,然后构造函数尝试用数据填充对象,或者如果传递的值不满足特定要求,则引发异常
  • 定义operator Json::Value()为我班的成员函数。

这样,我应该能够编写如下内容:

MyObj o;
Json::Value root;
root["foo"] = o;
MyObj reconstructed(root["foo"]);

但是我应该如何使用STL类型呢?编写显式函数,也许是模板,或者我应该对自己的数据类型做同样的事情,除了我使用自由函数而不是成员函数之外?最佳做法是什么?

多美

您可以使用for_each编写一个函数来执行此操作

如果要支持嵌套容器(向量中的向量等),则需要包装器函数并递归调用该函数,直到输入类型允许直接转换为Json :: Value为止。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章