Boost: как получить поддерево из существующего дерева свойств?
Я пытаюсь получить поддерево от 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'
может кто-нибудь помочь мне с этим? что я делаю не так?
1 ответов
вы возвращаете ссылку на local. Это не сработает. Прочтите это:
можно ли получить доступ к памяти локальной переменной вне ее области?
исправления:
ptree getSubTree(const string& path)
{
return pt.get_child(path);
}
ваш результат был manifestition из Неопределено Поведение и может отличаться в разные дни, компиляторы, запуски...