编译错误提升属性树C++

weixin_38070905 2019-09-12 02:14:21

我正在尝试使用boost属性树编译自定义linux。我在文件json_parser_read.hpp(行105)上有错误 struct a_literal_val { context &c; a_literal_val(context &c): c(c) { } void operator()(It b, It e) const { BOOST_ASSERT(c.stack.size() >= 1); c.stack.back()->push_back(std::make_pair(c.name, Str(b, e))); c.name.clear(); c.string.clear(); } }; 这段代码无法编译。 输出为:/path/to/boost/property_tree/detail/json_parser_read.hpp:105: error: no matching function for call to 'boost::property_tree::basic_ptree<std::basic_string<char>, std::basic_string<char> >::push_back(std::pair<std::basic_string<char>, std::basic_string<char> >)' c.stack.back()->push_back(std::make_pair(c.name, Str(b, e))); ^ 我使用升压v1.49 我与其他电脑进行测试,并将其与版本编译正确1.58 感谢您的帮助。









+1

什么是'context'?什么是'c.stack'? 'c.stack.back()'返回什么?请创建一个[最小,完整和可验证示例](http://stackoverflow.com/help/mcve)向我们展示。当然,请[阅读如何提出好问题](http://stackoverflow.com/help/how-to-ask)。 –











+0

http://idownvotedbecau.se/beingunresponsive –











...全文
19 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38080819 2019-09-12
  • 打赏
  • 举报
回复

这是您应该创建的SSCCE。我看不到你的problem¹,²: Live On Coliru #include <boost/property_tree/ptree.hpp> #include <deque> using boost::property_tree::ptree; struct context { std::string name, string; std::deque<ptree *> stack; }; struct a_literal_val { using Str = std::string; context &c; a_literal_val(context &c) : c(c) {} template <typename It> void operator()(It b, It e) const { BOOST_ASSERT(c.stack.size() >= 1); c.stack.back()->push_back(std::make_pair(c.name, ptree{Str(b, e)})); c.name.clear(); c.string.clear(); } }; #include <boost/property_tree/json_parser.hpp> #include <iostream> int main() { boost::property_tree::ptree pt; context ctx { "field1", "", { &pt } }; a_literal_val visitor {ctx}; std::string const value = "hello world"; visitor(value.rbegin(), value.rend()); // reverse, for fun write_json(std::cout, pt); } 打印 { "field1": "dlrow olleh" } ¹除了你可能滥用加速性能作为XML或JSON库。 Boost 没有 XML或JSON库。 ²是我知道你的样品比较复杂。很可能你正在为你的接口代码编写一个“通用”序列化程序。在我的水晶球中,我猜测你正在使用Boost Fusion改编的结构来处理嵌套的对象图。这一切都是以前完成的。问题是,你需要提出你有的问题,否则谁都不会知道。

434

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧