大佬教程收集整理的这篇文章主要介绍了boost-propertytree – 我们如何在另一个boost ptree中插入boost ptree作为节点?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我们有更高级别的结构,比如Person,它包含像Job这样的低级结构实例(每个人都有一份工作). Person和Job各自实现了一个ptreeify方法.我们的想法是通过让每个对象在它包含的每个其他对象上调用ptreeify来序列化层次结构.然后,生成的子对象的属性树作为节点插入到包含对象的属性树中.问题是我无法弄清楚如何实际插入.
在this SO post之后导致运行时错误.我缺乏了解导致它的原因所需的知识/经验.见下面的代码.
我也找到了this very similar question,但我完全不理解答案,我怀疑插入的使用避免了那里发现的并发症.
这是实际的代码.运行时错误发生在Person :: ptreeify中.
#include <boost/property_tree/json_parser.hpp> using boost::property_tree::ptree; using namespace std; struct Job{ std::string title; int hoursPerWeek; ptree ptreeify(void); //return a ptree represenTing this Job }; ptree Job::ptreeify(){ ptree pt; pt.put("title",titlE); pt.put("hours",hoursPerWeek); return pt; } struct Person{ std::string name; Job job; ptree ptreeify(void); //return a ptree represenTing this Person //This must iterively call ptreeify on all sub-objects void save(const std::string &fileName); //write this Person to file }; ptree Person::ptreeify(){ ptree pt; pt.put("name",Name); pt.put("job",""); ptree jobPt; jobPt = job.ptreeify(); std::cout << "Program dies after this line" << std::endl; //This next line causes a run time error pt.insert(pt.get_child("job").begin(),jobPt.begin(),jobPt.end()); return pt; } void Person::save(const std::string &fileName){ ptree pt; pt = ptreeify(); write_json(filename,pt); }; int main(){ Person myPerson; myPerson.name = "Julius"; Job myJob; myJob.title = "monkey"; myJob.hoursPerWeek = 40; myPerson.job = myJob; myPerson.save("myPerson.dat"); }
以上是大佬教程为你收集整理的boost-propertytree – 我们如何在另一个boost ptree中插入boost ptree作为节点?全部内容,希望文章能够帮你解决boost-propertytree – 我们如何在另一个boost ptree中插入boost ptree作为节点?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。