C++ 在boost::property_树中存储类

C++ 在boost::property_树中存储类,c++,xml,json,boost,C++,Xml,Json,Boost,我正在编写一个程序,记录程序中变量的信息。我想按文件->函数->变量对这些信息进行分组 boost::property_树似乎非常适合这种情况,因为我可以在树中的某个路径(file.function.variable)存储一个访问对象,然后轻松地将树转换为XML、JSON等 假设我正在记录一个变量的使用次数。我可以有一个类访问,它可以跟踪变量的写入和读取次数。然后,我可以将该对象存储在树中的file.function.variable中。每次访问变量时,我都可以在树中找到变量并更新有关它的信息

我正在编写一个程序,记录程序中变量的信息。我想按文件->函数->变量对这些信息进行分组

boost::property_树似乎非常适合这种情况,因为我可以在树中的某个路径(
file.function.variable
)存储一个访问对象,然后轻松地将树转换为XML、JSON等

假设我正在记录一个变量的使用次数。我可以有一个类访问,它可以跟踪变量的写入和读取次数。然后,我可以将该对象存储在树中的file.function.variable中。每次访问变量时,我都可以在树中找到变量并更新有关它的信息

但是,我不知道如何在树中存储类。我假设有一些东西需要实现或子类化,但是文档没有说明我要做什么

有办法解决我的问题吗?boost::property_树有更好的替代方案吗


谢谢。

boost::property_tree设计用于保存文本数据。这就是它适合导出为XML、JSON等的原因


修改类
Access
,使其包含与文本转换的方法,并将该文本存储在树中

您可以放弃树的概念,只需坚持使用键值对的平面图

例如:

std::map<std::string, Access> accesses;
// add one access
accesses["file.function.variable"] += 1;
std::map访问;
//添加一个访问权限
访问[“file.function.variable”]+=1;

您只需要编写一个例程,从其内容生成JSON,这应该很简单。(假设键的第一部分始终是文件,第二部分始终是函数,第三部分始终是变量。)

我真的不希望有这样一个巨大的嵌套结构,因为它会随着嵌套的加深而变大。例如,我将来可能会喜欢按文件夹->文件->函数->变量存储东西。理想情况下,我希望向我的类添加一个方法,允许它在对包含它的树调用write_JSON(tree)时将自身转换为XML/JSON。因此,绝对没有办法将类存储为节点,也没有方法在转换开始时将其转换为适当的文本格式?我想将Access对象存储在树中,因为它们将在程序运行时更新,我不能只是转换它们并存储文本,因为我需要一种以后访问和更新它们的方法。@tgt当然可以,但基于您独特的需求列表,您可能没有预先编写的解决方案。我的需求集有什么独特之处?我只想在树中存储一个类,并使用一两个方法将其转换为适当的格式。一种解决方案是:如果ptree中的每个节点都是ptree,那么我可以使我的类成为ptree的子类,并在类的属性发生更改时更新该树。但是,这似乎不起作用。谢谢。那我一定是做错事了。我会调查的。