1

我需要一个将 a 的所有成员rapidjson::Value作为std::vector. 我试图避免每次需要时都写ifs 。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 is ambiguous。有没有一种简单的方法可以克服这个问题?谢谢。

4

2 回答 2

2

std::vector 向量必须是可赋值的,所以你不能有一个 std::vector 的 const 引用。相反,尝试存储rapidjson::Value或指向它们的指针。如果您真的想存储引用,请查看std::reference_wrapper

从 C++ 标准的第 23.2.4 节类模板向量:

...存储的对象应满足Assignable的要求。

于 2015-01-07T08:23:23.733 回答
0

你不能。存储指向Values 的指针,你会没事的。确保不要丢失rapidjson::Document.

于 2015-01-07T08:41:04.923 回答