gpt4 book ai didi

c++ - boost json_parser 警告 C4715

转载 作者:行者123 更新时间:2023-11-28 01:41:04 25 4
gpt4 key购买 nike

我正在尝试从 boost::property_tree:ptree 对象中的字符串中保存一些数据:

const char* data = "Here are json params";
boost:property_tree:ptree tr;
std::stringstream ss;
ss << data;

//Here i get warning
boost::property_tree:ptree::read_json(ss, tr);

警告如下:

boost\property_tree\detail\json_parser\standard_callbacks.hpp(132): warning C4715: 'boost::property_tree::json_parser::detail::standard_callbacks<boost::property_tree::basic_ptree<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > >::new_tree' : not all control paths return a value

谁能帮我解决这个问题?

最佳答案

这不是问题。它与 Boost 有关,而不是您的代码。如果愿意,您可以忽略警告或在 IDE 中取消警告。错误是 Ptree& new_tree 技术上可以在没有 return 语句的情况下完成。这是代码:

Ptree& new_tree() {
if (stack.empty()) {
layer l = {leaf, &root};
stack.push_back(l);
return root;
}

layer& l = stack.back();

switch (l.k) {
case array: {
l.t->push_back(std::make_pair(string(), Ptree()));
layer nl = {leaf, & l.t->back().second};
stack.push_back(nl);
return *stack.back().t;
}

case object:
default:
BOOST_ASSERT(false); // must start with string, i.e. call new_value

case key: {
l.t->push_back(std::make_pair(key_buffer, Ptree()));
l.k = object;
layer nl = {leaf, &l.t->back().second};
stack.push_back(nl);
return *stack.back().t;
}

case leaf:
stack.pop_back();
return new_tree();
}
}

如您所见,在 switch 中有一个 default: BOOST_ASSERT(false) 这意味着虽然该函数不返回任何内容,但它也会触发您的调试器立即停止,因为出现了可怕的错误.您的编译器不够聪明,无法自行计算,因此它会警告您。在这种情况下,您绝对可以忽略该警告。

关于c++ - boost json_parser 警告 C4715,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47136503/

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