gpt4 book ai didi

c++ - Boost property_tree 用于存储指针

转载 作者:太空宇宙 更新时间:2023-11-04 14:20:55 27 4
gpt4 key购买 nike

是否可以在 boost 属性树中存储指向对象的指针,然后使用迭代器检索数据?我正在尝试做类似的事情:

property_tree::ptree pt;
pt.put<CGUICrateElement*>("1.2.3.4", new MyObject() );
//... more tree construction here...

然后递归地遍历所有树节点,例如:

property_tree::ptree::iterator iter = treeNode.begin();
property_tree::ptree::iterator iter_end = treeNode.end();

for ( ; iter != iter_end; ++iter )
{
MyObject *obj = lexical_cast<MyObject*>(iter->second.data());
//... etc

问题是我收到错误 lexical_cast.hpp:1112: error: no match for 'operator>>' in 'stream >> output' on the lexical cast line.

将以下内容添加到 MyObject 没有帮助

friend std::istream& operator>>(std::istream& in, MyObject& obj){ return in; }

我也试过 c 转换和动态转换都无济于事。

甚至可以在 ptree 中使用指针吗?我打算创建自己的树结构作为解决方法,我想我会先在这里问一下。

干杯。

最佳答案

为 MyObject 的引用添加一个运算符>> 在您实际尝试将 lexical_cast 转换为指向 MyObject 的指针 时无济于事。您可以想象创建一个 operator>>(std::istream&, MyObject*&)。但是,请记住 property_tree 是为从文本文件中读取配置而设计的,因此您将享受将对象与文本相互转换的乐趣。

不要将 property_tree 用作通用数据结构。在内部,它将期望处理文本。

关于c++ - Boost property_tree 用于存储指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7764029/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com