我正在尝试使用boost::ptree
从get_child
获取子树,如下所示:
我有:
class ConfigFile
{
ptree pt;
ConfigFile(const string& name)
{
read_json(name, pt);
}
ptree& getSubTree(const string& path)
{
ptree spt = pt.get_child(path);
return spt;
}
}
当我打电话
ConfigFile cf("myfile.json");
ptree pt = cf.getSubTree("path.to.child")
函数在返回
后崩溃terminate called after throwing an instance of 'std::length_error'
有人可以帮我吗?我做错了什么?
答案 0 :(得分:6)
您正在返回对本地的引用。那不会奏效。阅读本文:
Can a local variable's memory be accessed outside its scope?
修正:
ptree getSubTree(const string& path)
{
return pt.get_child(path);
}
你的结果是Undefined Behaviour的一个表现,在不同的日子,编译器,运行可能会有所不同......