编译错误提升属性树C
Compile error boost property tree c++
我正在尝试使用自定义Linux的Boost属性树编译。我在文件上有一个错误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)));
^
我正在使用Boost V1.49
我使用其他PC测试,并使用版本1.58
正确编译感谢您的帮助。
这是您应该创建的SSCCE。我看不到你的问题¹,²:
活在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"
}
Å除非您可能会滥用Boost属性为XML或JSON库。Boost 没有 XML或JSON库。
²是的,我知道您的样本更复杂。您很可能为接口代码编写"通用"序列化器。甚至在我的水晶球上更深,我可以猜想您正在使用Boost Fusion适应的结构来处理嵌套对象图。这一切都已经完成了。关键是,您需要提出您遇到的问题,或者没人会知道。
- 无法使用 SWIG 在 Python 中实例化C++类(获取属性错误)
- CMake 错误 - 目标 foo INTERFACE_SOURCES属性包含在源目录中以前缀为前缀的路径
- 当警告为错误时使用 [[已弃用]] 属性 (-Werror)
- C++ 中常量属性的初始化构造函数错误
- GCC 编译器是否应该对涉及 [[fallthrough]] 属性的格式错误的C++代码进行诊断?
- 我想获取点的属性,它报告错误 C3867:"point::output_x":非标准语法;使用"&"创建指向成员的指针
- MFC 对话框属性表用法在 VS 2017 中产生错误,适用于 VS 2013
- pybind11:属性错误:尝试从 py 文件运行函数时,模块'XXX'没有属性'YYY'
- 创建新对象并立即为其设置属性时出现编译器错误
- Windows 脚本主机 - 错误 '800A01B6' 对象不支持此属性或方法
- accelerator.cu(8): 错误:属性"managed"在这里不适用?
- 我刚刚安装了Visual Studio,遇到了一些错误,特别是WindowsSDKDir属性未定义.可能找不到某些生成工
- 有没有办法将 vector<unsigned char> 插入 postgresql 表中,具有 bytea 属性,没有 UTF8 编码错误?
- LNK2019与另一个工作项目具有相同属性的项目上的错误
- Arduino / esp8266:错误:'Pchr 不允许部分属性
- 在 python 中使用链接库中的方法时出现属性错误
- GNU Radio OOT 模块属性错误:"模块"对象没有属性"MME_cpp"
- 属性错误:"模块"对象没有属性"func",仅通过C++调用
- 属性错误: 'Foo'对象没有属性'max'
- 类成员属性错误