我需要一个函数,将rapidjson::Value
的所有成员作为std::vector
返回。我试图避免每次需要时用if
写IsArray()
。不幸的是,以下代码不起作用。
std::vector<const rapidjson::Value&> valueToList(const rapidjson::Value& value)
{
std::vector<const rapidjson::Value&> valueList;
if (value.IsArray())
{
for (rapidjson::SizeType i = 0; i < value.Size(); i++)
{
valueList.push_back(val[i]);
}
}
else
{
valueList.push_back(val);
}
return valueList;
}
我收到错误 push_back含糊不清。有没有一种简单的方法来克服这个问题?感谢。
答案 0 :(得分:2)
std :: vector向量必须是可赋值的,因此你不能拥有const引用的std :: vector。相反,尝试存储 rapidjson :: Value 或指向它们的指针。如果您确实想存储引用,请查看 std :: reference_wrapper 。
从第23.2.4节C ++标准的类模板向量:
......存储的对象应满足Assignable的要求。
答案 1 :(得分:0)
你做不到。存储指向Value
的指针,你会没事的。确保不要丢失rapidjson::Document
。