【发布时间】:2011-10-14 06:50:14
【问题描述】:
是否可以在 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' 在词法转换行上。
将以下内容添加到 MyObject 没有帮助
friend std::istream& operator>>(std::istream& in, MyObject& obj){ return in; }
我也尝试过 c 强制转换和动态强制转换,但无济于事。
在 ptree 中甚至可以使用指针吗?我将创建自己的树结构作为解决方法,我想我会先在这里问。
干杯。
【问题讨论】:
标签: c++ pointers boost tree properties